调试内存泄漏的方法

VC中要调试内存泄漏,只需要在程序中包含以下语句:

 

#define CRTDBG_MAP_ALLOC

#include <stdlib.h>

#include <crtdbg.h>

 

然后在main开始处,加入如下语句:

#ifdef _DEBUG

    _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

#endif

 

或者 在程序结束处加入

#ifdef _DEBUG

    _CrtDumpMemoryLeaks();

#endif

 

这样在程序结束的时候就会在输出窗口输出内存泄漏的信息,:

Detected memory leaks!

Dumping objects ->

{651} normal block at 0x00FA9B58, 376 bytes long.

 Data: < b=  }= ( =   = > F0 62 3D 00 90 7D 3D 00 28 96 3D 00 C0 AE 3D 00

Object dump complete.

 

要想找到具体是哪里new了没有释放,只需要在程序开头再添加一句:

_CrtSetBreakAlloc(xxx);

xxx为泄漏的内存块,可以从输出信息里面查找到,如上面的话就是651,可以理解成第几次分配的内存.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值