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)注释掉是正确的
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;