_freea

メモリ ブロックを割り当て解除または解放します。

構文

void _freea(
   void *memblock
);

パラメーター

memblock
以前割り当てられ、解放されるメモリ ブロック。

戻り値

ありません。

解説

この関数は _freea 、以前に呼び出しによって割り当てられたメモリ ブロック (memblock) の割り当てを解除します _malloca_freea は、ヒープまたはスタック上でメモリが割り当てられているかどうかを確認します。 スタック上で割り当てられている場合、_freea は何も行いません。 ヒープ上で割り当てられている場合、解放されるバイト数は、ブロックが割り当てられたときに要求されたバイト数と同じです。 if memblock is NULL, the pointer is ignored, and _freea immediately returns. 無効なポインター (割り当てられなかったメモリ ブロックへのポインター) を解放しようとすると、後続の割り当て _malloca要求に影響し、エラーが発生する可能性があります。

_freea は、メモリがヒープに割り当てられていることが判明した場合に内部的に呼び出 free されます。 メモリが、ヒープまたはスタックのどちらにあるかは、割り当てられたメモリの直前のアドレスにメモリ内で配置されたマーカーによって決まります。

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

メモリ ブロックが解放されたら、 _heapmin 未使用の領域を結合してオペレーティング システムに解放することで、ヒープ上の空きメモリの量を最小限に抑えます。 オペレーティング システムにリリースされない解放されたメモリは、空きプールに復元され、再度割り当てに使用できます。

_freea に対する呼び出しは、_malloca に対するすべての呼び出しを伴う必要があります。 また、同じメモリで 2 回呼び出 _freea すとエラーになります。 アプリケーションが C ランタイム ライブラリのデバッグ バージョンにリンクされている場合、特に定義_CRTDBG_MAP_ALLOCによって機能が有効になっていると_malloc_dbg、呼び出し_freeaが見つからないか重複しているのを見つけるのが簡単です。 デバッグ プロセス中のヒープの管理方法の詳細については、「CRT デバッグ ヒープ」を参照してください

_freea__declspec(noalias) としてマークされます。これは、関数がグローバル変数を変更しないことを保証します。 詳細については、noaliasを参照してください。

必要条件

機能 必須ヘッダー
_freea <stdlib.h> および <malloc.h>

互換性の詳細については、「 Compatibility」を参照してください。

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

関連項目

メモリ割り当て
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin