記憶體統計資料檢視
更新: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 提供程式所使用的總記憶體量。