zoukankan      html  css  js  c++  java
  • 非空判断

    今天调查内存泄漏,发现一块申请的堆未释放,于是加了一段释放代码
    if(!pbuffer)
    {
        TaskMemFree(pbuffer);
    }

    运行程序,发现仍然泄漏,继续检查其余代码,没发现问题,正在郁闷中,发现单步调试不能走到
    释放代码内部,一看条件判断,晕!写了个无效代码,pbuffer为空时才会执行释放操作,改为
    if(pbuffer)
    {
        TaskMemFree(pbuffer);
    }

    问题解决!
    看来写代码时显示判断还是保险些啊,如果当初写成
    if(pbuffer != NULL)
    {
        TaskMemFree(pbuffer);
    }
    就不会出现这样的问题了。

    另外发现,堆分配时要做好配对,TaskMemAlloc要与TaskMemFree一起用,
    New和Delete一起用,尤其在调用方法负责分配空间,调用者负责释放时,要
    做好约定,有次用TaskMemAlloc分配的空间,但用Delete释放掉了,造成内
    存泄漏,奇怪的是当时用Release版本,编译器不能检查出来,但用Debug版
    本就提示出错了。

  • 相关阅读:
    课后作业03
    课堂测验02
    构建之法阅读笔记02
    进度条 二
    软件工程个人作业02
    Sprint6
    Sprint5
    Alpha版总结会议
    Beta版总结会议
    Alpha阶段项目Postmortem会议总结
  • 原文地址:https://www.cnblogs.com/sizzle/p/1211318.html
Copyright © 2011-2022 走看看