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

参照

参照

メモリ割り当て

_alloca

calloc

malloc

realloc

_free_dbg

_heapmin

_freea