Dijelovi memorije /MEMORY PARTS/

Svakoj pokrenutoj aplikaciji dodjeljuje se dio memorije, koji ovisno o namjeni možemo podijeliti na 4 dijela:

HEAP
Heap ili dinamička memorija je memorija gdje se smještaju dinamički alocirane vrijednosti. One mogu mijenjati svoju veličinu u toku izvršenja programa.Na primjer, dinamički alociranom nizu možemo mijenjati veličinu u toku izvršenja programa, dok sa statičkim nizom alociranim na stack-u to nije moguće. Dinamičko alociranje se vrši preko referenci tj. pokazivača. Za razliku od stack-a, ova memorija nema unaprijed ograničenu veličinu.

STACK
Stek je dio memorije u kojem se smještaju sve varijable koje funkcije u programu koriste. Podaci se dodaju na vrh stack-a i skinuti se može samo ono što se nalazi na vrhu. Podaci alocirani na steku se tretiraju kao lokalni, npr. ako smo iz funkcije main() pozvali funkciju f, varijable koje ona koristi dodaju se na stack. Po povratku u main, svi podaci se predaju okviru stack-a i uništavaju. To znači da varijable koje smo deklarisali unutar funkcije f neće biti dostupne nakon povratka u main.

STATIC/GLOBAL
Ovaj dio memorije je rezervisan za static/global promjenljive. One su dostupne svakoj funkciji, od početka do kraja izvršavanja programa.

CODE/TEXT
U ovom dijelu memorije smješten je kod aplikacije interpretiran u obliku naredbi. Kod se ne mijenja u toku izvršenja programa.

Index