共用方式為


_freea

解除配置或釋放記憶體區塊。

void _freea( 
   void *memblock 
);

參數

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

傳回值

無。

備註

_freea 函式解除配置由先前呼叫 _malloca配置的記憶體區塊 (memblock)。 _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。 如需堆積在偵錯過程中的運作,請參閱 The CRT Debug Heap

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

需求

功能

必要的標頭

_freea

<stdlib.h> 和 <malloc.h>

如需更多關於相容性的資訊,請參閱入門介紹中的 相容性 (Compatibility)

範例

請參閱_malloca中的範例。

.NET Framework 對等用法

不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需詳細資訊,請參閱平台叫用範例

請參閱

參考

記憶體配置

_malloca

calloc

malloc

_malloc_dbg

realloc

_free_dbg

_heapmin