free

メモリ ブロックを割り当て解除または解放します。

構文

void free(
   void *memblock
);

パラメーター

memblock
以前割り当てられ、解放されるメモリ ブロック。

解説

free 関数は、以前に callocmalloc、または realloc の呼び出しによって割り当てられたメモリ ロック (memblock) を割り当て解除します。 解放されたバイト数は、ブロックが割り当てられた (または再割り当て reallocされたときに) 要求されたバイト数と同じです。 if memblock is NULL, the pointer is ignored, and free immediately returns. 無効なポインター (callocmalloc、または 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