100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Visual Studio 内存泄漏检测方法

Visual Studio 内存泄漏检测方法

时间:2020-10-11 05:53:21

相关推荐

Visual Studio 内存泄漏检测方法

Visual Studio 内存泄漏检测方法 非MFC程序可以用以下方法检测内存泄露: 1.程序开始包含如下定义: #ifdef _DEBUG #define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__) #else #define DEBUG_CLIENTBLOCK #endif // _DEBUG #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> #ifdef _DEBUG #define new DEBUG_CLIENTBLOCK #endif // _DEBUG 2.程序中添加下面的函数: _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF); Debug版本程序运行结束后如有内存泄漏,输出窗口中会显示类似信息: Detected memory leaks! Dumping objects -> g:\programs\test\test.cpp(16) : {51} client block at 0x00385C58, subtype 0, 4 bytes long. Data: < > CD CD CD CD Object dump complete. MFC程序内存泄漏检测方法: 1.在 CMyApp 中添加如下三个 CMemoryState 类的成员变量: #ifdef _DEBUG protected: CMemoryState m_msOld, m_msNew, m_msDiff; #endif // _DEBUG 2.在 CMyApp::InitInstance() 中添加如下代码: #ifdef _DEBUG m_msOld.Checkpoint(); #endif // _DEBUG 3.在 CMyApp::ExitInstance() 中添加如下代码: #ifdef _DEBUG m_msNew.Checkpoint(); if (m_msDiff.Difference(m_msOld, m_msNew)) { afxDump<<"\nMemory Leaked :\n"; m_msDiff.DumpStatistics(); afxDump<<"Dump Complete !\n\n"; } #endif // _DEBUG Debug版本程序运行结束后如有内存泄漏,输出窗口中会显示类似信息: Memory Leaked : 0 bytes in 0 Free Blocks. 8 bytes in 1 Normal Blocks. 0 bytes in 0 CRT Blocks. 0 bytes in 0 Ignore Blocks. 0 bytes in 0 Client Blocks. Largest number used: 8825 bytes. Total allocations: 47506 bytes. Dump Complete ! Detected memory leaks! Dumping objects -> g:\programs\chat\chatdlg.cpp(120) : {118} normal block at 0x00D98150, 8 bytes long. Data: < > A8 7F D9 00 01 00 00 00 Object dump complete.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。