次の方法で共有


_CrtSetDumpClient

更新 : 2007 年 11 月

_CLIENT_BLOCK 型メモリ ブロックをダンプするアプリケーション定義関数をインストールします (デバッグ バージョンだけ)。

_CRT_DUMP_CLIENT _CrtSetDumpClient( 
   _CRT_DUMP_CLIENT dumpClient 
);

パラメータ

  • dumpClient
    C ランタイム デバッグのメモリ ダンプ プロセスにフックする新しいクライアント定義メモリ ダンプ関数。

戻り値

前回定義されていたクライアント ブロック ダンプ関数を返します。

解説

_CrtSetDumpClient 関数を使用すると、アプリケーションは、_CLIENT_BLOCK メモリ ブロックに格納されているオブジェクトをダンプする独自の関数を C ランタイム デバッグのメモリ ダンプ プロセスにフックできます。この結果、_CrtMemDumpAllObjectsSince_CrtDumpMemoryLeaks などのデバッグ ダンプ関数が _CLIENT_BLOCK メモリ ブロックをダンプするたびに、アプリケーションのダンプ関数も呼び出されます。_CrtSetDumpClient を使用すると、簡単な方法でメモリ リークを検出し、_CLIENT_BLOCK ブロックに格納されているデータのコンテンツを検証またはレポートできます。_DEBUG が未定義の場合、_CrtSetDumpClient の呼び出しはプリプロセスで削除されます。

_CrtSetDumpClient 関数は、dumpClient で指定されたアプリケーション定義の新しいダンプ関数をインストールし、前回定義されていたダンプ関数を返します。クライアント ブロックのダンプ関数の例は、次のとおりです。

void DumpClientFunction( void *userPortion, size_t blockSize );

引数 userPortion は、メモリ ブロックのユーザー データ領域の先頭へのポインタです。blockSize には、割り当てられたメモリ ブロックのサイズをバイト単位で指定します。クライアント ブロックのダンプ関数は、void を返す必要があります。_CrtSetDumpClient に渡されるクライアント ダンプ関数へのポインタは _CRT_DUMP_CLIENT 型で、Crtdbg.h で次のように定義されています。

typedef void (__cdecl *_CRT_DUMP_CLIENT)( void *, size_t );

アプリケーション定義のダンプ関数の実装例については、「crt_dbg2 サンプル : C ランタイムのデバッグのフック関数」を参照してください。_CLIENT_BLOCK 型メモリ ブロックを操作する関数の詳細については、「Client ブロック用のフック関数」を参照してください。_CrtReportBlockType 関数は、ブロック型およびブロック内部処理形式に関する情報を返すために使用できます。

必要条件

ルーチン

必須ヘッダー

_CrtSetDumpClient

<crtdbg.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

ライブラリ

C ランタイム ライブラリのデバッグ バージョンのみ。

使用例

_CrtSetDumpClient の使用例については、「crt_dbg2」を参照してください。

.NET Framework の相当するアイテム

適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

デバッグ ルーチン

_CrtReportBlockType

_CrtGetDumpClient