デバッグ バージョンのヒープ割り当て関数

C ランタイム (CRT) ライブラリには、ヒープ割り当て関数の特別なデバッグ バージョンが含まれています。 これらの関数の名前は、リリース バージョンと _dbg 同じで、追加されます。 この記事では、CRT 関数のリリース バージョンと_dbgバージョンの違いについて説明します。例として使用_malloc_dbgmallocします。

デバッグ ビルドでの動作

定義されている場合 _DEBUG 、CRT はすべての malloc 呼び出しを _malloc_dbg. そのため、デバッグ中に利点を受け取る代わりにmalloc_malloc_dbgコードを書き直す必要はありません。

しかし、明示的に _malloc_dbg を呼び出すこともできます。 明示的に _malloc_dbg を呼び出すと、さらに次の利点があります。

  • _CLIENT_BLOCK 型の割り当てを追跡できます。

  • 割り当て要求が発生したソース ファイルと行番号を格納できます。

呼び出しをmalloc変換しない場合は、定義することでソース ファイル情報を_CRTDBG_MAP_ALLOC取得できます。これにより、プリプロセッサはすべての呼び出_malloc_dbgmalloc_malloc_dbgをラッパーmallocに依存する代わりに直接マップします。

クライアント ブロック内の個々の割り当て型を追跡するには、_malloc_dbg パラメーターを blockType に設定して、直接 _CLIENT_BLOCK を呼び出す必要があります。

非デバッグ ビルドでの動作

定義されていない場合 _DEBUG 、呼び出し malloc は応答されず、呼び出し _malloc_dbg は解決され malloc、定義 _CRTDBG_MAP_ALLOC は無視され、割り当て要求に関連するソース ファイル情報は提供されません。 mallocブロック型パラメーターがないため、型の_CLIENT_BLOCK要求は標準割り当てとして扱われます。

関連項目

CRT のデバッグ技術