VS2005 检测内存泄漏的方法(转载)
一、非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.
本文转自:http://ufownl.blog.163.com/blog/static/1250122200861912757566/
http://blog.csdn.net/wangningyu/article/details/4465229
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2015-10-03 IBM总裁郭士纳总结的四类人
2015-10-03 dddd
2014-10-03 曲线控件我一直用codeproject上的那几个(C++ 100款开源界面库)