BoundsChecker 检查内存泄露

程序跑完一副图片后就少了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;

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