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
。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
需求
函式 | 必要的標頭 |
---|---|
free |
<stdlib.h> 和 <malloc.h> |
如需相容性詳細資訊,請參閱相容性。
範例
請參閱 malloc
的範例。
另請參閱
記憶體配置
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea