取消配置或釋放記憶體區塊。
語法
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