查看内存统计信息
本主题适用于:
版本 |
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 给出程序所使用的内存总量。