デバッグ バージョンのヒープ割り当て関数
C ランタイム (CRT) ライブラリには、ヒープ割り当て関数の特別なデバッグ バージョンが含まれています。 これらの関数の名前は、リリース バージョンと _dbg
同じで、追加されます。 この記事では、CRT 関数のリリース バージョンと_dbg
バージョンの違いについて説明します。例として使用_malloc_dbg
malloc
します。
デバッグ ビルドでの動作
定義されている場合 _DEBUG
、CRT はすべての malloc
呼び出しを _malloc_dbg
. そのため、デバッグ中に利点を受け取る代わりにmalloc
、_malloc_dbg
コードを書き直す必要はありません。
しかし、明示的に _malloc_dbg
を呼び出すこともできます。 明示的に _malloc_dbg
を呼び出すと、さらに次の利点があります。
_CLIENT_BLOCK
型の割り当てを追跡できます。割り当て要求が発生したソース ファイルと行番号を格納できます。
呼び出しをmalloc
変換しない場合は、定義することでソース ファイル情報を_CRTDBG_MAP_ALLOC
取得できます。これにより、プリプロセッサはすべての呼び出_malloc_dbg
しmalloc
_malloc_dbg
をラッパーmalloc
に依存する代わりに直接マップします。
クライアント ブロック内の個々の割り当て型を追跡するには、_malloc_dbg
パラメーターを blockType
に設定して、直接 _CLIENT_BLOCK
を呼び出す必要があります。
非デバッグ ビルドでの動作
定義されていない場合 _DEBUG
、呼び出し malloc
は応答されず、呼び出し _malloc_dbg
は解決され malloc
、定義 _CRTDBG_MAP_ALLOC
は無視され、割り当て要求に関連するソース ファイル情報は提供されません。 malloc
ブロック型パラメーターがないため、型の_CLIENT_BLOCK
要求は標準割り当てとして扱われます。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示