上一篇中说到使用内存分配,动态分配二维数组。
在后面自己调试中,发现内存溢出问题,调式之后发现自己之前对字符串操作这快存在严重失误。
比如:
char*p=0;
malloc(p,sizeof(20));
为P分配20字节空间。
分配完成后使用
p="1245";
这样,把字符串“1245”的首地址赋值给指针P;
虽然这样可以P[0]='1',P[1]='2'.......
但是这样赋值操作后,P指向的地址不再是malloc分配的地址。
最终会造成:
进行free(p); 操作会失败,到时malloc分配的内存不能被释放;