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 を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。