字符串指针这样给赋值为什么不妥当?解决方法

字符串指针这样给赋值为什么不妥当? char*p(char*)malloc(32)pabced //...free(p)//p这样赋值不妥

字符串指针这样给赋值为什么不妥当?

char   *p   =   (char   *)malloc(32);
p   =   "abced ";

//   ...

free(p);
//   p这样赋值不妥当,应改为如下,请问为什么?
strcpy(p, "abced ");

[解决办法]
strcpy(p, "abced ")
________________
p--------> |__|__|__|__|__|
^
|copy过去 覆盖原有内容.
________|_____
|abced\0 |
--------------
p= "abced "

____________
p <------|abced\0 | 只把字符指针传给p,而p指的原来区域的内容未改变.引起的可能后果就
---------------
是原来p指向的那块内存丢失,内存泄漏