检测内存泄漏的方法

1.在头部加入

1.1方式1:

#ifdef _DEBUG #define DEBUG_MALLOC(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__) #define malloc(s) DEBUG_MALLOC(s) #include <crtdbg.h> #define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__) #define new DEBUG_NEW #endif //__FILE__文件路径 //__LINE__行号

 

1.2方式2:

#ifdef _DEBUG /* _CRTDBG_MAP_ALLOC需要在#include <crtdbg.h>之前定义 但是在代码中定义_CRTDBG_MAP_ALLOC不起作用,需要再做如下定义: //#define DEBUG_MALLOC(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__) //#define malloc(s) DEBUG_MALLOC(s) 故最好直接在Preprocessor中定义_CRTDBG_MAP_ALLOC。 */ //#define _CRTDBG_MAP_ALLOC #include <crtdbg.h> #define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__) #define new DEBUG_NEW #endif

 

2.在主函数中加入

_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); _CrtSetBreakAlloc(91); //_CrtSetDbgFlag 加入后会进行内存泄漏检测 //_CrtSetBreakAlloc加入此句后,断点会断在泄漏的位置91行上,程序不再往下运行。没有此句程序会运行下去,并在输出中输出文件行号等于泄漏信息。

你可能感兴趣的:(File,leak,preprocessor)