Windows 下的内存泄漏检测方法
Posted SHAZI
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows 下的内存泄漏检测方法相关的知识,希望对你有一定的参考价值。
在 Windows 下,可使用 Visual C++ 的 C Runtime Library(CRT) 检测内存泄漏。
首先,我们在.c或.cpp 文件首行插入这一段代码:
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
main() 中插入如下的代码:
int main() {
//开始的地方插入该语句
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
//_CrtSetBreakAlloc(79);
//其它代码
//return前插入该语句
_CrtDumpMemoryLeaks();
return 0;
}
Visual Studio的Output的输出如下:
C:\Temp\memleak\memleak.cpp(15) : {79} normal block at 0x00441BA0, 2 bytes long.
Data: <AB> 41 42
Object dump complete.
我们可以加上 _CrtSetBreakAlloc(79); 来调试,那么它便会在第 79 次时中断于分配调用的位置,那时候就能从调用堆栈去找出来龙去脉。
以上是关于Windows 下的内存泄漏检测方法的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual C++ (Windows) 中检测内存泄漏