您的位置:首页 > 其它

应用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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: