c++内存泄露检测

当我们进行c++编程的时候经常遇到的一个问题是内存泄露,尤其在进行一个大型的项目的时候,可能会用到几十个类,稍加不小心造成内存泄露,一般常用以下两种方法:

方法一:

  1. #ifdef _DEBUG  
  2. #define New   new(_NORMAL_BLOCK, __FILE__, __LINE__)  
  3. #endif  
  4.   
  5. #define CRTDBG_MAP_ALLOC    
  6. #include <stdlib.h>    
  7. #include <crtdbg.h>    
  8. //在入口函数中包含 _CrtDumpMemoryLeaks();    
  9. //即可检测到内存泄露  
  10.   
  11. //以如下测试函数为例:  
  12. int main()  
  13. {  
  14.     char* pChars = New char[10];  
  15.     _CrtDumpMemoryLeaks();  
  16.     return 0;  
  17. }  

注意:

1.VS2010下测试的时候,发现_CrtDumpMemoryLeaks();这句必须放在函数结束处,放在主函数入口处输出窗口不会输出内存泄露信息

2.有时候我们为了看到程序的调试信息,喜欢加system(“pause”);如果要对内存泄露检测,请不要加这条语句,这样没法检测到我们内存泄露。

方法二:

下载Visual C++的免费的内存泄露检测工具Visual LeakDetector(VLD),下载链接:http://vld.codeplex.com/,它的特点有:(1)、它是免费开源的,采用LGPL协议;(2)、它可以得到内存泄露点的调用堆栈,可以获取到所在文件及行号;(3)、它可以得到泄露内存的完整数据;(4)、它可以设置内存泄露报告的级别。然后配置项目属性,将VLD安装包下的include目录,lib目录,src,分别引入到VC++目录


最后在main函数的头文件中加入#include“vld.h”这样可以检测内存是否泄露。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值