free
Uvolní nebo uvolní blok paměti.
Syntaxe
void free(
void *memblock
);
Parametry
memblock
Dříve přidělený blok paměti, který se uvolní.
Poznámky
Funkce free
uvolní blok paměti (memblock
), který byl dříve přidělen voláním calloc
, malloc
nebo realloc
. Počet uvolněných bajtů je ekvivalentní počtu bajtů požadovaných při přidělení bloku (nebo jeho přidělení).realloc
Pokud memblock
je NULL
, ukazatel je ignorován a free
okamžitě vrátí. Pokus o uvolnění neplatného ukazatele (ukazatel na blok paměti, který nebyl přidělen , calloc
malloc
nebo realloc
) může ovlivnit následné žádosti o přidělení a způsobit chyby.
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í.
Pokud je aplikace propojena s ladicí verzí knihoven runtime jazyka C, free
přeloží na _free_dbg
. Další informace o správě haldy během procesu ladění naleznete v části Haldy ladění CRT.
free
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
.
Chcete-li uvolnit paměť přidělenou _malloca
pomocí , použijte _freea
.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
Function | Požadovaný hlavičkový soubor |
---|---|
free |
<stdlib.h> a <malloc.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
Podívejte se na příklad pro malloc
.
Viz také
Přidělení paměti
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea