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";
//这个内存地址不需要手动释放,系统会帮你释放的!
//只有new/malloc分配的内存才需要手动释放