应用CMemoryState动态检测内存泄漏
2009-05-19 16:21
281 查看
使用MFC开发,当程序退出时,Visual Studio会在输出窗口提供关于内存泄漏信息的提示,但也仅仅是在退出后才给出提示,如果想在运行过程中在输出窗口看到关于当前内存泄漏的信息,就需要借助MFC类CMemoryState.
这个类在afx.h头文件中定义在Debug模式下,因此使用这个类也需要在Debug模式下。
CMemoryState类的主要成员函数如下:
.Checkpoint 取得当前内存状态的一个快照或“检查点”
.Difference 计算两个CMemoryState类型的对象之间的差异
.DumpAllObjectsSince 从前一个检查点开始转储所有分配对象的摘要
.DumpStatistics 打印一个CMemoryState 对象的内存分配统计信息
范例(检测内存泄漏):
#ifdef _DEBUG
CMemoryState msStart, msEnd, msDiff;
msStart.Checkpoint();
int *pNum = new int;
//delete pNum;
msEnd.Checkpoint();
if( msDiff.Difference( msStart, msEnd ) )
{
//检测到内存泄漏
//输出内存泄漏的信息
msDiff.DumpAllObjectsSince();
}
#endif
运行时在输出窗口显示:
Dumping objects ->
{90} normal block at 0x00EB2D58, 4 bytes long.
Data: < > CD CD CD CD
Object dump complete.
这个类在afx.h头文件中定义在Debug模式下,因此使用这个类也需要在Debug模式下。
CMemoryState类的主要成员函数如下:
.Checkpoint 取得当前内存状态的一个快照或“检查点”
.Difference 计算两个CMemoryState类型的对象之间的差异
.DumpAllObjectsSince 从前一个检查点开始转储所有分配对象的摘要
.DumpStatistics 打印一个CMemoryState 对象的内存分配统计信息
范例(检测内存泄漏):
#ifdef _DEBUG
CMemoryState msStart, msEnd, msDiff;
msStart.Checkpoint();
int *pNum = new int;
//delete pNum;
msEnd.Checkpoint();
if( msDiff.Difference( msStart, msEnd ) )
{
//检测到内存泄漏
//输出内存泄漏的信息
msDiff.DumpAllObjectsSince();
}
#endif
运行时在输出窗口显示:
Dumping objects ->
{90} normal block at 0x00EB2D58, 4 bytes long.
Data: < > CD CD CD CD
Object dump complete.
相关文章推荐
- 调试 方便地检测程序的内存泄漏 CMemoryState
- 简单内存泄漏检测方法,解决Detected memory leaks!问题
- 简单内存泄漏检测方法 解决 Detected memory leaks! 问题
- 简单内存泄漏检测方法 解决 Detected memory leaks! 问题
- 【原】Silverlight内存泄漏原因、检测及解决(Memory Leak of Silverlight:Reason、Detection and Solving)
- 简单内存泄漏检测方法,解决Detected memory leaks!问题
- 简单内存泄漏检测方法 解决Detected memory leaks!
- Android应用性能之检测内存泄漏
- 简单内存泄漏检测方法 解决 Detected memory leaks! 问题
- CMemoryState(MFC内存检测类)
- 简单内存泄漏检测方法 解决 Detected memory leaks!
- 【Visual Studio】简单内存泄漏检测方法 解决 Detected memory leaks! 问题(转)
- 简单内存泄漏检测方法 解决 Detected memory leaks! 问题
- _CrtDumpMemoryLeaks()的作用 检测内存泄漏
- 笔记:Memory Analysis Tools 应用与内存泄露检测
- 简单内存泄漏检测方法 解决 Detected memory leaks!
- 简单内存泄漏检测方法,解决Detected memory leaks!问题
- 简单内存泄漏检测方法 解决 Detected memory leaks! 问题
- 简单内存泄漏检测方法 解决 Detected memory leaks
- CMemoryState(MFC内存检测类)