_freea
Uvolní nebo uvolní blok paměti.
Syntaxe
void _freea(
void *memblock
);
Parametry
memblock
Dříve přidělený blok paměti, který se uvolní.
Vrácená hodnota
Nezaokrouhlovat.
Poznámky
Funkce _freea
uvolní blok paměti (memblock
), který byl dříve přidělen voláním _malloca
. _freea
zkontroluje, jestli byla paměť přidělena na haldě nebo zásobníku. Pokud byl přidělen v zásobníku, _freea
nic nedělá. Pokud byl přidělen na haldě, počet uvolněných bajtů odpovídá počtu bajtů požadovaným při přidělení bloku. Pokud memblock
je NULL
, ukazatel je ignorován a _freea
okamžitě vrátí. Pokus o uvolnění neplatného ukazatele (ukazatel na blok paměti, který nebyl přidělen _malloca
) může ovlivnit následné žádosti o přidělení a způsobit chyby.
_freea
volá free
interně, pokud zjistí, že paměť je přidělena na haldě. Ať už je paměť na haldě nebo zásobníku určená značkou umístěnou v paměti na adrese bezprostředně před přidělenou pamětí.
Pokud dojde k chybě při uvolnění paměti, errno
je nastaven s informacemi z operačního systému o povaze selhání. Další informace naleznete v tématu errno
, _doserrno
, _sys_errlist
a _sys_nerr
.
Po uvolnění bloku paměti minimalizuje množství volné paměti na haldě tím, _heapmin
že shodí nepoužívané oblasti a uvolní je zpět do operačního systému. Uvolněná paměť, která není uvolněna do operačního systému, se obnoví do bezplatného fondu a je k dispozici pro opětovné přidělení.
Hovor, ke kterému _freea
musí být připojena všechna volání _malloca
. Jedná se také o chybu, která volá _freea
dvakrát ve stejné paměti. Když je aplikace propojena s ladicí verzí knihoven runtime jazyka C, zejména s funkcemi _malloc_dbg
povolenými definováním _CRTDBG_MAP_ALLOC
, je jednodušší najít chybějící nebo duplikovaná volání _freea
. Další informace o správě haldy během procesu ladění naleznete v části Haldy ladění CRT.
_freea
je označen , __declspec(noalias)
což znamená, že funkce není zaručeno, že nebude upravovat globální proměnné. Další informace najdete na webu noalias
.
Požadavky
Function | Požadovaný hlavičkový soubor |
---|---|
_freea |
<stdlib.h> a <malloc.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
Podívejte se na příklad pro _malloca
.
Viz také
Přidělení paměti
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin