查看内存统计信息

本主题适用于:

版本

Visual Basic

C#

F#

C++

Web Developer

学习版

主题不适用 主题不适用 主题不适用

仅限本机

主题不适用

专业版、高级专业版和旗舰版

主题不适用 主题不适用 主题不适用

仅限本机

主题不适用

CMemoryState::Difference 函数监视两个内存状态对象,并检测起始状态和结束状态之间未从堆释放的所有对象。 在如何:拍内存快照并使用 CMemoryState::Difference 对它们进行比较后,可以调用 CMemoryState::DumpStatistics 来获取有关尚未释放的对象的信息。

请看下面的示例:

if( diffMemState.Difference( oldMemState, newMemState ) )
{
   TRACE( "Memory leaked!\n" );
   diffMemState.DumpStatistics();
}

从该示例得出的转储示例如下所示:

0 bytes in 0 Free Blocks
22 bytes in 1 Object Blocks
45 bytes in 4 Non-Object Blocks
Largest number used: 67 bytes
Total allocations: 67 bytes

可用块是 afxMemDF 设置为 delayFreeMemDF 时延迟释放的块。 有关更多信息,请参见 如何:启用内存诊断

第二行中显示的普通对象块仍在堆中保持分配状态。

非对象块包括通过 new 分配的数组和结构。 在此例中,堆中分配了四个非对象块,但均未释放。

Largest number used 给出程序在任意时候所使用的最大内存。

Total allocations 给出程序所使用的内存总量。

请参见

任务

如何:拍内存快照

参考

CMemoryState Structure

其他资源

MFC 中的内存泄漏检测

Diagnostic Services