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 を使用します。
必要条件
機能 |
必須ヘッダー |
---|---|
free |
<stdlib.h> および <malloc.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
「malloc」の例を参照してください。
同等の .NET Framework 関数
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。