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