C++内存泄漏的调试

一、在程序代码中加入代码:

头文件和宏定义:

#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h> #define new new(_NORMAL_BLOCK, __FILE__, __LINE__)

注意:#include 语句的顺序。如果更改此顺序,所使用的函数可能无法正确工作。

在析构函数最后一行调用:

_CrtDumpMemoryLeaks();

 

二、在调试过程中监视指定内存位置:

C运行库(C run-time library)

long _CrtSetBreakAlloc(  long lBreakAlloc ); 

其中参数lBreakAlloc即为内存分配号(花括号中的数字)。我们只要在程序初始化函数中添加语句:_CrtSetBreakAlloc(80)就可以使程序在Debug
F5运行时自动断点到我们想要的位置。

在Watch窗口中:

 静态链接 在name项中输入_crtBreakAlloc,在value项中输入你要定位的内存分配编号;

动态链接 在name项中输入{msvcr130d.dll}_crtBreakAlloc,在value项中输入内存分配号;

posted @ 2018-05-07 09:28  傍风无意  阅读(700)  评论(0编辑  收藏  举报