读书人

free (p); p = NULL;解决方法

发布时间: 2013-09-17 13:35:59 作者: rapoo

free (p); p = NULL;
char *p = "Hello";
free (p);
p = NULL;
printf("%s\n", (p) ? p : "NULL");

为什么出现
Segmentation fault (core dumped)

将free(p)注释掉是正确的 C free null
[解决办法]
free 和malloc 对应的,释放的是动态分配的内存,你现在释放的是一个栈指针,不出问题才怪呢

解释的也不是很清楚,坐等楼下解释更详细点
[解决办法]
char *p = "Hello"; 不这个不是malloc的堆内存,不能free。
[解决办法]
free只能释放由malloc所申请的内存,否则结果难料,如非要用free的话,可以这样:


char* p = (char*)malloc(20);
strcpy(p, "Hello");
free(p);
p = NULL;


引用:
char *p = "Hello";
free (p);
p = NULL;


printf("%s\n", (p) ? p : "NULL");

为什么出现
Segmentation fault (core dumped)

将free(p)注释掉是正确的


[解决办法]
你没调用malloc()分配内存,干嘛调用free呢。
char *p = "Hello";
字符是存在在常量存储区,不需要你进行释放内存啊
[解决办法]
"hello"是一个字符串常量,谁free谁死。
[解决办法]

char *p = "Hello";
//这个内存地址不需要手动释放,系统会帮你释放的!
//只有new/malloc分配的内存才需要手动释放

读书人网 >C语言

热点推荐