代码改变世界
[登录 · 注册]
  • 问题:这个新申请的内存为什么不能free掉?(已解决)
  • 一、问题描述

      先上代码,

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

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

    二、 指点迷津

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

    三、 后语

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

  • 原文地址:https://www.cnblogs.com/the-one/p/9724175.html
Copyright 2008-2020 晋ICP备12007731号-1