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

更新 : 2007 年 11 月

このトピックの内容は、次の製品に該当します。

Edition

Visual Basic

C#

C++

Web Developer

Express

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

Standard

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

Pro/Team

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

表の凡例 :

トピック該当

対象

トピック該当なし

該当なし

トピックは該当しますが、コマンドは既定では非表示です

既定で非表示のコマンド

C ランタイム ライブラリには、デバッグ バージョンの特殊なヒープ割り当て関数があります。これらの関数は、リリース バージョンの関数名の末尾に "_dbg" を追加した名前になっています。ここでは、CRT 関数のリリース バージョンと _dbg バージョンとの相違点について、malloc_malloc_dbg を例にして説明します。

_DEBUG が定義されている場合、CRT はすべての malloc 呼び出しを _malloc_dbg に置き換えます。したがって、malloc の代わりに _malloc_dbg を使用するようにコードを書き直さなくても、デバッグ中は _malloc_dbg を利用できます。

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

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

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

malloc 呼び出しを _malloc_dbg 呼び出しに変換せずに、ソース ファイル情報を取得するには、_CRTDBG_MAP_ALLOC を定義します。これにより、malloc のラッパーを利用するのではなく、プリプロセッサがすべての malloc 呼び出しを直接 _malloc_dbg に置き換えます。

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

_DEBUG が定義されていない場合は、malloc 呼び出しはそのままですが、_malloc_dbg 呼び出しは malloc に変換されます。また、_CRTDBG_MAP_ALLOC が定義されていても無視されるため、割り当て要求に関連するソース ファイル情報を取得することはできません。malloc にはブロック型を指定するパラメータがないため、_CLIENT_BLOCK 型への割り当て要求は標準の割り当てとして扱われます。

参照

その他の技術情報

CRT のデバッグ技術