メモリ統計情報の表示
更新 : 2007 年 11 月
このトピックの内容は、次の製品に該当します。
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
ネイティブのみ |
|||
Standard |
ネイティブのみ |
|||
Pro/Team |
ネイティブのみ |
表の凡例 :
対象 |
|
該当なし |
|
既定で非表示のコマンド |
CMemoryState::Difference 関数は、2 つのメモリ状態オブジェクトを参照し、1 つ目の状態から 2 つ目の状態までの間にヒープから解放されなかったオブジェクトを検出します。「方法 : メモリのスナップショットを取得する」の手順を実行し、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
Free Blocks というのは、afxMemDF が delayFreeMemDF に設定されている場合、解放が遅れているブロックのことです。詳細については、「方法 : メモリ診断を有効にする」を参照してください。
2 行目に示されている Object Blocks は、ヒープ上に割り当てられたままになっているブロックです。
Non-Object Blocks には、new によって割り当てられた配列と構造体が含まれます。この例では、ヒープ上に割り当てられた後で解放されていない Non-Object Blocks が 4 つあります。
Largest number used は、プログラムが占有したメモリの最大値を示します。
Total allocations は、プログラムで使用されたメモリの総量を示します。