Edellisessä luvussa todettiin, että automatic-muuttujien
tilanvaraukset tehdään ohjelman ajon aikana.
Varaukset samoin kuin muistialueiden vapauttamiset ovat automaattisia tapahtumia, joista
ohjelmoijan ei tarvitse huolehtia.
Ohjelmoijalla on mahdollisuus kuitenkin varata ja vapauttaa muistia eksplisiittisesti.
C tarjoaa tähän tarkoitukseen funktiot malloc() ja free().
![]() | malloc()-funktiolla varataan muistia ja |
![]() | free()-funktiolla vapautetaan malloc():lla varattu muistialue. |
Varaukset tehdään muistialueelta, jota kutsutaan kasaksi
(heap).
Se on muistialue, joka jää vapaaksi sen jälkeen, kun on varattu tilat exe-koodille
sekä ohjelman data- ja pinoalueille.
![]() | malloc() ja free() |
![]() | Dynaaminen taulukko |