free
メモリ ブロックを割り当て解除または解放します。
構文
void free(
void *memblock
);
パラメーター
memblock
以前割り当てられ、解放されるメモリ ブロック。
解説
free
関数は、以前に calloc
、malloc
、または 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
を使用します。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
要件
機能 | 必須ヘッダー |
---|---|
free |
<stdlib.h> および <malloc.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
malloc
の例を参照してください。
関連項目
メモリ割り当て
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea