_freea
メモリ ブロックを解放するまたは解放します。
void _freea(
void *memblock
);
パラメーター
- memblock
解放する前に割り当てられたメモリ ブロック。
戻り値
なし。
解説
_freea の関数は _malloca の呼び出しで既に割り当てられたメモリ ブロック memblock() を解放します。_freea はメモリをヒープとスタックに割り当てられているかどうかを確認します。これはスタック上に割り当てられ_freea は何も実行しません。これは解放されたヒープに割り当てられたバイト数はブロックの割り当て時に要求されたバイト数と同じです。memblock が NULL ポインターの場合は無視され_freea はすぐに制御を返します。無効なポインター (_malloca でないメモリ ブロックへのポインター) を解放しようとすると後続の割り当て要求が影響を受けエラーが発生する可能性があります。
メモリをヒープに割り当てられたなった場合は _freea は free を内部的に呼び出します。メモリをヒープまたはスタック上にあるかどうかを割り当てられたメモリのアドレスをメモリに格納するマーカーによって決まります。
エラーが発生するとメモリの解放に errno は失敗の種類のオペレーティング システムによる情報で設定します。詳細については、「errno、_doserrno、_sys_errlist、および _sys_nerr」を参照してください。
メモリ ブロックが解放された後_heapmin使われていない領域を結合しオペレーティング システムによって解放することによってヒープの空きメモリの量を最小限に抑えることができます。オペレーティング システムに解放されない解放されたメモリは空きプールに復元し割り当てにも使用できます。
_freea の呼び出しは _malloca へのすべての呼び出しに伴わなければ必要があります。また同じメモリを _freea 回呼び出すとエラーになります。アプリケーションが C ランタイム ライブラリのデバッグ バージョンとリンクしたとき特に _malloc_dbg 機能と _CRTDBG_MAP_ALLOC の定義で有効になる_freea にない場合つまり複製呼び出しが簡単です。詳細についてはヒープがデバッグ中にマネージ方法についてはCRT デバッグ ヒープ を参照してください。
_freea はグローバル変数を変更しないように関数が保証されないことを意味するのマークされた __declspec(noalias) です。詳細についてはnoalias を参照してください。
必要条件
Function |
必須ヘッダー |
---|---|
_freea |
<stdlib.h> および <malloc.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
_malloca 関数の例を参照してください。
同等の .NET Framework 関数
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。