_freea
解除配置或釋放記憶體區塊。
void _freea(
void *memblock
);
參數
- memblock
先前配置的記憶體被釋放的區塊。
傳回值
無。
備註
_freea 函式解除配置的記憶體區塊 (memblock),先前配置呼叫_malloca。 _freea檢查是否記憶體的配置在堆積或堆疊上。 如果它配置在堆疊上, _freea不執行任何動作。 如果它配置在堆積上,已釋放的位元組數等於已配置區塊時,所要求的位元組數目。 如果memblock是NULL,指標會被忽略,並_freea立即傳回。 嘗試釋放無效的指標 (未配置的記憶體區塊的指標_malloca) 可能會影響後續的配置要求,並會造成錯誤。
_freea呼叫free在內部是如果找到記憶體配置在堆積上的時候。 是否記憶體堆積或堆疊由標記放在前面所配置的記憶體位址的記憶體中。
如果錯誤發生在釋出記憶體, errno設為作業系統在本質上的資訊失敗。 如需詳細資訊,請參閱 errno、 _doserrno、 _sys_errlist 和 _sys_nerr。
在釋放記憶體區塊之後, _heapmin 聯合未使用的區域,並將其發佈回作業系統會在堆積上的可用記憶體數量最小化。 釋放給作業系統會釋放的記憶體已還原到可用集區,而且是可供重新配置。
呼叫_freea必須隨附的所有呼叫_malloca。 它也會呼叫發生錯誤_freea在相同的記憶體。 當應用程式均結合偵錯版本的 c 執行階段程式庫,尤其是_malloc_dbg功能定義啟用_CRTDBG_MAP_ALLOC,就比較容易尋找遺失或重複的呼叫_freea。 如需有關如何管理在偵錯的程序的堆積的詳細資訊,請參閱的 CRT 偵錯堆積。
_freea標示為__declspec(noalias),這表示函式會保證不能修改全域變數。 如需詳細資訊,請參閱 noalias。
需求
Function |
所需的標頭 |
---|---|
_freea |
<stdlib.h> 和 <malloc.h> |
如需相容性資訊,請參閱相容性在簡介中。
範例
請參閱範例的_malloca。
.NET Framework 對等用法
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。