free

更新 : 2007 年 11 月

メモリ ブロックを解放します。

void free( 
   void *memblock 
);

パラメータ

  • memblock
    解放する割り当て済みメモリ ブロック。

解説

free 関数は、calloc、malloc、または realloc への呼び出しによって割り当てられたメモリ ブロック (memblock) を解放します。解放されるバイト数は、ブロック割り当て時 (realloc の場合は再割り当て時) に要求されたバイト数に相当します。memblock が NULL の場合、ポインタは無視され、free からすぐに制御が戻ります。無効なポインタ (calloc、malloc、または realloc によって割り当てられていないメモリ ブロックへのポインタ) を解放しようとすると、以降の割り当て要求に影響し、エラーが発生する場合があります。

Visual C++ 2005 では、メモリの解放時にエラーが発生した場合、errno は、エラーの原因に関するオペレーティング システムからの情報と共に設定されます。詳細については、「errno、_doserrno、_sys_errlist、および _sys_nerr」を参照してください。

メモリ ブロックが解放されると、_heapmin が未使用の領域をつなぎ合わせ、オペレーティング システムに戻し、ヒープの空きメモリの量を最小化します。解放されたメモリのうち、オペレーティング システムに戻されなかったメモリは、空きプールに復元され、再度割り当てに使用できるようになります。

アプリケーションを C ランタイム ライブラリのデバッグ バージョンとリンクすると、free は _free_dbg に置き換わります。デバッグ中のヒープの処理方法の詳細については、「CRT デバッグ ヒープ」を参照してください。

free には、__declspec(noalias) のマークが付けられます。これは、この関数がグローバル変数を変更しないことを意味します。詳細については、「noalias」を参照してください。

_malloca によって割り当てたメモリを解放する場合は、_freea を使用します。

必要条件

関数

必須ヘッダー

free

<stdlib.h> および <malloc.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

malloc」の例を参照してください。

.NET Framework の相当するアイテム

適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

メモリ割り当て

_alloca

calloc

malloc

realloc

_free_dbg

_heapmin

_freea