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.