Pamäť pridelená pomocou funkcií malloc a calloc nie je sama osebe pridelená. Preto sa pri dynamickom prideľovaní pamäte používa voľná metóda. Pomáha znižovať plytvanie pamäťou tým, že ju uvoľňuje.
Ako sa uvoľní pridelená pamäť?
V jazyku C sa knižničná funkcia malloc používa na pridelenie bloku pamäte na halde. Program pristupuje k tomuto bloku pamäte prostredníctvom ukazovateľa, ktorý vracia malloc. Keď už pamäť nie je potrebná, ukazovateľ sa prenesie na free, čím sa uvoľní pamäť, aby sa dala použiť na iné účely.
Čo sa stane, ak neuvoľníte pridelenú pamäť?
Vo väčšine prípadov je uvoľnenie pamäte tesne pred ukončením programu zbytočné. OS si to aj tak vyžiada späť. Zadarmo sa dotkne mŕtvych predmetov a zobrazí ich; OS nebude. Dôsledok: Buďte opatrní pri „detektoroch úniku“, ktoré počítajú pridelené položky.
Je prideľovanie pamäte drahé?
Naivné meranie nákladov na prideľovanie a uvoľňovanie veľkých blokov pamäte by dospelo k záveru, že to stojí asi 7,5 μs na každý alokovaný/ voľný pár. Existujú však tri samostatné náklady na MB pre veľké alokácie.
Môžem prerozdelenie uvoľniť pridelený pamäťový priestor, ak áno, ako?
Funkcia realloc prideľuje, prerozdeľuje alebo uvoľňuje blok pamäte špecifikovaný parametrom old_blk na základe nasledujúcich pravidiel: Ak old_blk je NULL, nový blok pamäte o veľkosti bajtov jepridelené. Ak je veľkosť nula, zavolá sa bezplatná funkcia na uvoľnenie pamäte, na ktorú ukazuje old_blk.