varijable i objekti zauzimanje memorije

Član
Učlanjen(a)
02.11.2010
Poruka
174
U cilju unapređenja teme iz programiranja postaviću jedno pitanje
za koje smatram da mnogi nisu skontali, a neki su bogme i padali na ispitu :
Kakva je razlika u dodjeli(zauzimanju) memorije prilikom kreiranja varijable npr:
int a;
long b;
i kreiranju objekta:
Brojevi br=new Brojevi(); //operatorom new dinamički smo dodjelili memoriju objektu

Sta znači dinamički? Jel to memorija u hard-disku.
Podpitanje: Šta je stack(stek) , a šta heap (hip)?
 
Učlanjen(a)
18.08.2009
Poruka
5
Ukratko:

Heap (srpski citano: hip) je "slobodna memorija", u njoj moras manuelno da rezervises memoriju i sto je najbitnije, moras sam da je oslobodis (tzv. dinamicka alokacija memorije). Tu moze da dodje do "curenja" podataka ako se memorija ne oslobodi kad treba. Prakticno ovu memoriju imas koliko i ram memorije.

Dok kod Stack-a (stek) memorija se automatski rezervise i takodje se automatski uklanja kad neka promenljiva vise nije potrebna (npr. izadjes iz blok naredba neke funkcije).

Ovo je kratko da krace ne moze biti, ima tu puno price oko Heap-a i Stack-a. Takodje znaj da postoje razlike izmedju programskih jezika. U Javi postoji: Garbage Collector. Poznato je da se objekti kreiraju na Heap-u. Garbage collector sluzi da oslobodi memoriju nekog objekta kad vise nema referenci (nesto kao pointer u C++) na taj objekat. Sto dosta olaksava posao, dok u C++ -u sve moras sam. Naravno i ovo takodje moze da proizvede probleme ;)

Evo jedna zanimljiva slika:

1977084_10203238482633896_797877405_n.jpg


(sve ovo je laicki napisano, i sam tek ucim sve ove stvari ;) )

Pozdrav :D
 
Poslednja izmena:
Natrag
Top