共用方式為


記憶體統計資料檢視

更新:2007 年 11 月

這個主題適用於:

版本

Visual Basic

C#

C++

Web Developer

Express 版

標題不適用於 標題不適用於

僅適用原生

標題不適用於

Standard 版

標題不適用於 標題不適用於

僅適用原生

標題不適用於

Pro/Team 版

標題不適用於 標題不適用於

僅適用原生

標題不適用於

表格圖例:

標題適用於

套用

標題不適用於

不套用

預設會套用主題但隱藏命令

預設隱藏的命令。

CMemoryState::Difference 函式會查看兩個記憶體狀態物件,並偵測開頭和結尾狀態之間任何沒有從堆積解除配置的物件。在您已經 HOW TO:攝取記憶體快照並使用 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 則解除配置會延遲的區塊。如需詳細資訊,請參閱HOW TO:啟用記憶體診斷

一般物件區塊 (顯示在第二行) 會維持在堆積配置。

非物件區塊會以 new 包含已配置的陣列和結構。在這種情況下,四個非物件區塊會配置於堆積上而不會解除配置。

Largest number used 提供程式在任何時間可以使用的最大記憶體。

Total allocations 提供程式所使用的總記憶體量。

請參閱

工作

HOW TO:攝取記憶體快照

參考

CMemoryState Structure

其他資源

MFC 中的記憶體遺漏

Diagnostic Services