8.  Dynamické premenné

8.3  Zrušenie dynamickej premennej, funkcia free

Uvoľňovanie pamäte je opačná akcia než jej prideľovanie. Platí všeobecná zásada, že dynamicky alokovanú pamäť, ktorú už nepotrebujeme, uvoľníme ihneď a nečakáme až na koniec programu. Ak sme dynamickú premennú vytvorili pomocou funkcie malloc, na jej zrušenie je potrebné použiť funkciu free. Funkcia free má jediný parameter a to pointer na typ void, ktorý ukazuje na začiatok alokovaného bloku. Zrušením dynamickej premennej vrátime už nepotrebnú pamäť späť do heapu.

Predpokladajme, že sme niekde v programe vytvorili dynamickú premennú typu char príkazom

p = (char*)malloc(sizeof(char));

a na inom mieste ju chceme zrušiť. Urobíme to príkazom

free((void*)p);

Pointer na char sme museli pretypovať na pointer na void! Pamäťový priestor, ktorý zaberala dynamická premenná na ktorú pointer p ukazoval, sa dal k dispozícii na ďalšie použitie.