首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-09-17 
free (p)p NULL char *p Hello free (p) p NULLprintf(%s\n, (p) ? p : NULL)为什么出

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分配的内存才需要手动释放

热点排行