问题:这个新申请的内存为什么不能free掉?(已解决)

时间:2022-07-09 12:14:50

一、问题描述

  先上代码,

/***   省略 ***/
uChar *base64 = NULL;
/*** 省略 ***/
base64 = (一段内存)
/*** 省略 ***/
base64 = strchr(base64, ',');
free(base64); //报错。

  程序走到最后一句就退出来了,为什么?

二、 指点迷津

  原来,动态申请的一段内存,是不允许从中间的某一部分开始释放掉内存,要释放也是一整块儿释放掉。

三、 后语

  不仔细想一想,还真看不出来,这应该算是一处指针陷阱了。