Client ブロック用のフック関数
_CLIENT_BLOCK 型のブロックに格納されているデータの内容を検証したりレポートしたりするために、専用の関数を作成できます。作成する関数には、CRTDBG.H で定義されている次のようなプロトタイプが必要です。
void YourClientDump(void *, size_t)
つまり、独自のフック関数は、対象となる割り当てブロックの先頭への void ポインターと、割り当てサイズを示す size_t 型の値を受け取り、void を返すようにする必要があります。それ以外の内容については、自由に決定できます。
作成したフック関数を _CrtSetDumpClient を使用して組み込むと、_CLIENT_BLOCK 型のブロックがダンプされるたびに、このフック関数が呼び出されます。_CrtReportBlockType を使用すると、ダンプされたブロックの型や、その細分化された型に関する情報を取得できます。
_CrtSetDumpClient に渡す独自の関数へのポインターは _CRT_DUMP_CLIENT 型です。これらは、CRTDBG.H で次のように定義されています。
typedef void (__cdecl *_CRT_DUMP_CLIENT)
(void *, size_t);