Share via


_free_dbg

更新 : 2007 年 11 月

ヒープのメモリ ブロックを解放します。ただし、デバッグ バージョンに限ります。

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 プロック型が割り当てられた後、ヒープのメモリ ブロック リンク リストに保持されます。

Visual C++ 2005 では、メモリの解放時にエラーが発生した場合、errno は、エラーの原因に関するオペレーティング システムからの情報と共に設定されます。詳細については、「errno、_doserrno、_sys_errlist、および _sys_nerr」を参照してください。

デバッグ バージョンのベース ヒープに対するメモリ ブロックの割り当て、初期化、管理方法の詳細については、「メモリ管理とデバッグ ヒープ」を参照してください。割り当てブロック型とその使用方法については、「デバッグ ヒープ上のメモリ ブロックの型」を参照してください。標準で呼び出すヒープ関数と、アプリケーションのデバッグ ビルドで呼び出すデバッグ バージョンのヒープ関数との違いの詳細については、「デバッグ バージョンのヒープ割り当て関数」を参照してください。

必要条件

ルーチン

必須ヘッダー

_free_dbg

<crtdbg.h>

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

使用例

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

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

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

参照

参照

デバッグ ルーチン

_malloc_dbg