次の方法で共有


メモリ統計情報の表示

更新 : 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 は、プログラムで使用されたメモリの総量を示します。

参照

処理手順

方法 : メモリのスナップショットを取得する

参照

CMemoryState 構造体

その他の技術情報

MFC におけるメモリ リークの検出

診断サービス