次の方法で共有


free

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

構文

void free(
   void *memblock
);

パラメーター

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

解説

free 関数は、以前に callocmalloc、または realloc の呼び出しによって割り当てられたメモリ ロック (memblock) を割り当て解除します。 解放されたバイト数は、ブロックが割り当てられたときに要求されたバイト数と同じです ( reallocの場合は再割り当て)。 memblockNULLされている場合、ポインターは無視され、freeはすぐに返されます。 無効なポインター (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