_free_dbg
ヒープ内のメモリ ブロックを解放します (デバッグ バージョンのみ)。
構文
void _free_dbg(
void *userData,
int blockType
);
パラメーター
userData
解放される、割り当てられていたメモリ ブロックへのポインター。
blockType
解放される、割り当てられていたメモリ ブロックの型。_CLIENT_BLOCK
、_NORMAL_BLOCK
、または _IGNORE_BLOCK
。
解説
_free_dbg
関数は、free
関数のデバッグ バージョンです。 _DEBUG
が定義されていない場合、_free_dbg
の各呼び出しは、free
の呼び出しに減らされます。 free
と _free_dbg
は、どちらもベース ヒープのメモリ ブロックを解放しますが、_free_dbg
は 2 つのデバッグ機能を提供します。解放されたブロックをヒープのリンク リストに保持してメモリ不足の状況をシミュレートする機能と、特定の種類の割り当てを解放するためのブロック型パラメーターです。
_free_dbg
は、解放操作を実行する前に、指定されたすべてのファイルおよびブロックの位置の有効性チェックを実行します。 アプリケーションはこの情報を提供する必要はありません。 メモリ ブロックが解放されると、デバッグ ヒープ マネージャーは、ユーザー部分の両側のバッファーの整合性を自動的にチェックします。 上書きが検出されると、エラー レポートが発行されます。 _crtDbgFlag
フラグの_CRTDBG_DELAY_FREE_MEM_DF
ビット フィールドが設定されている場合、解放されたブロックには0xDD値が入力され、_FREE_BLOCK
ブロックの種類が割り当てられ、ヒープのリンクされたメモリ ブロックの一覧に保持されます。
メモリの解放でエラーが発生すると、エラーの性質に関するオペレーティング システムからの情報が errno
に設定されます。 詳細については、「errno
」、「_doserrno
」、「_sys_errlist
」、および「_sys_nerr
」を参照してください。
基本ヒープのデバッグ バージョンでのメモリ ブロックの割り当て、初期化、および管理方法については、「 CRT デバッグ ヒープの詳細を参照してください。 割り当てブロックの種類とその使用方法については、「デバッグ ヒープ上のブロックの種類を参照してください。 標準ヒープ関数の呼び出しとデバッグ バージョンの違いについては、「 Debug バージョンのヒープ割り当て関数を参照してください。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_free_dbg |
<crtdbg.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
_free_dbg
の使用方法のサンプルについては、「crt_dbg2
」を参照してください。