问题:这个新申请的内存为什么不能free掉?(已解决)
一、问题描述
先上代码,
/*** 省略 ***/ uChar *base64 = NULL; /*** 省略 ***/ base64 = (一段内存) /*** 省略 ***/ base64 = strchr(base64, ','); free(base64); //报错。
程序走到最后一句就退出来了,为什么?
二、 指点迷津
原来,动态申请的一段内存,是不允许从中间的某一部分开始释放掉内存,要释放也是一整块儿释放掉。
三、 后语
如果不仔细想一想,还真看不出来,这应该算是一处指针陷阱了。