free (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)注释掉是正确的
------解决方案--------------------
free 和malloc 对应的,释放的是动态分配的内存,你现在释放的是一个栈指针,不出问题才怪呢
解释的也不是很清楚,坐等楼下解释更详细点
------解决方案--------------------
char *p = "Hello"; 不这个不是malloc的堆内存,不能free。
------解决方案--------------------
free只能释放由malloc所申请的内存,否则结果难料,如非要用free的话,可以这样:
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;