AfxCheckMemory
更新 : 2007 年 11 月
この関数はメモリの空きメモリ プールの正当性をチェックし、必要ならばエラー メッセージを出力します。
BOOL AfxCheckMemory( );
戻り値
メモリ エラーがない場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
メモリが破損していない場合は、何も出力しません。
ヒープ領域に現在割り当てられているすべてのメモリ ブロックを調べます。このブロックには new を使って割り当てられたものが含まれますが、malloc や ::GlobalAlloc のようなメモリ割り当て関数を直接呼び出して割り当てたものは含まれません。ブロックでメモリの破壊を検出したときは、メッセージをデバッガに出力します。
#define new DEBUG_NEW
プログラム モジュールに上記の行をインクルードすると、その後 AfxCheckMemory を呼び出すときに、メモリが割り当てられたファイル名と行番号が表示されます。
メモ : |
---|
モジュールに 1 つ以上のシリアル化できるクラスの実装が含まれる場合は、#define 行を最後の IMPLEMENT_SERIAL マクロ呼び出しの後に配置する必要があります。 |
この関数は MFC ライブラリのデバッグ環境でしか動作しません。
使用例
CAge* pcage = new CAge(21); // CAge is derived from CObject.
Age* page = new Age(22); // Age is NOT derived from CObject.
*(((char*)pcage) - 1) = 99; // Corrupt preceding guard byte
*(((char*)page) - 1) = 99; // Corrupt preceding guard byte
AfxCheckMemory();
必要条件
ヘッダー : afx.h