free

取消配置或釋放記憶體區塊。

語法

void free(
   void *memblock
);

參數

memblock
要釋放之先前配置的記憶體區塊。

備註

free 函式會取消配置 callocmallocrealloc 呼叫先前所配置的記憶體區塊 (memblock)。 釋放的位元組數目相當於配置區塊時所要求的位元組數目(或針對 重新配置 realloc )。 如果 memblockNULL ,則會忽略指標,並 free 立即傳回 。 嘗試釋放不正確指標(未由 callocmallocrealloc 配置的記憶體區塊指標,可能會影響後續的配置要求並造成錯誤。

若釋放記憶體發生錯誤,會使用來自作業系統且具有失敗性質的資訊設定 errno。 如需詳細資訊,請參閱errno, _doserrno, _sys_errlist_sys_nerr.

釋放記憶體區塊之後, _heapmin 藉由將未使用的區域聯合並釋回作業系統,將堆積上的可用記憶體數量降到最低。 未發行至作業系統的釋放記憶體會還原至免費集區,並可供再次配置。

當應用程式與 C 執行時間程式庫的偵錯版本連結時, free 會解析為 _free_dbg 。 如需如何在偵錯程式期間管理堆積的詳細資訊,請參閱 CRT 偵錯堆積

free 標記為 __declspec(noalias),表示保證函式不會修改全域變數。 如需詳細資訊,請參閱noalias

若要釋放配置給 的 _malloca 記憶體,請使用 _freea

根據預設,此函式的全域狀態會限定于應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。

需求

函式 必要的標頭
free <stdlib.h><malloc.h>

如需相容性詳細資訊,請參閱相容性

範例

請參閱 的 malloc 範例。

另請參閱

記憶體配置
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea