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

一、问题描述

  先上代码,

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

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

二、 指点迷津

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

三、 后语

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

posted @ 2018-09-29 15:58  心中的阿哲  阅读(311)  评论(0编辑  收藏  举报