问个字符串相关的问题

来源:百度知道 编辑:UC知道 时间:2024/09/25 08:22:57
#include <stdio.h>
#include <string.h>
int main()
{
char * str;
str = "123";
printf("%s\n",str);
return 0;
}
这样写会有内存泄露吧?

内存泄漏是指不停地分配内存,而得不到释放,造成系统资源的滥用。
就你这个程序,严格的说会造成内存泄漏,因为程序执行后,系统要一直检测你的输入以判断你的输入是否满足判断条件。
这个调用,占用的内存少,又在不断的刷新内存,所以虽然有泄露但不会堆积,所以不会对系统有影响。
你可以看看http://zhidao.baidu.com/question/34511461.html里面的那个非最佳答案,说的不错。注意哈,不是那个最佳答案。

应该不会吧.又没分配内存空间

这样写应该不会。

只有用了malloc(在堆上)没有free才有内存泄漏.

"123"是在编译时候在常量区分配的.

#include <stdio.h>
#include <string.h>
int main()
{
char * str;
str = strdup("123"); ///////这样就有了,这个会申请空间
printf("%s\n",str);
return 0;
}