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