程序跑完一副图片后就少了10几M内存,自己瞄来瞄去,仍然不晓得哪里漏掉了删除指针。

于是想找工具BoundsChecker 来检测一下。

设置了 BoundsChecker  BoundsChecker 检查内存泄露

 

在 Debug 中跑起来看,检查的错误全部都是系统DLL的内存分配冲突,分配与删除不在同一个模块内。

BoundsChecker 检查内存泄露 

困惑中。

后来无意中 在BoundsChecker  的选项中选中 Rebuild All with BoundsChecker  ,把整个工程build一下,再debug的时候就发现好几种其他的错误。其中一个就是 Memory leak,点过去一看,果然是这个问题。

BoundsChecker 检查内存泄露    if( _r!=NULL )
BoundsChecker 检查内存泄露        delete _r;
BoundsChecker 检查内存泄露    _r 
= NULL;
BoundsChecker 检查内存泄露
BoundsChecker 检查内存泄露    
if( _g=NULL )  // 就这里错啦,应为:_g!=NULL
BoundsChecker 检查内存泄露
        delete _g;
BoundsChecker 检查内存泄露    _g 
= NULL;
BoundsChecker 检查内存泄露
BoundsChecker 检查内存泄露    
if ( _b!=NULL )
BoundsChecker 检查内存泄露        delete _b;
BoundsChecker 检查内存泄露    _b 
= NULL;

再运行一次,果然没问题了。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-03
  • 2021-12-05
  • 2021-07-27
  • 2021-07-02
猜你喜欢
  • 2021-09-06
  • 2021-11-28
  • 2022-12-23
  • 2021-09-26
  • 2021-05-22
  • 2021-07-26
  • 2021-08-25
相关资源
相似解决方案