釋放
解除配置或釋放記憶體區塊。
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。 如需堆積在偵錯過程中的運作,請參閱 The CRT Debug Heap 。
free 標記為 __declspec(noalias),表示函式保證不會修改全域變數。 如需詳細資訊,請參閱noalias。
若要釋放記憶體配置與 _malloca,請使用 _freea。
需求
功能 |
必要的標頭 |
---|---|
free |
<stdlib.h> 和 <malloc.h> |
如需其他相容性資訊,請參閱<簡介>中的相容性。
範例
請參閱 malloc 的範例。
.NET Framework 對等用法
不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需詳細資訊,請參閱平台叫用範例。