|
![]() |
#1 |
Space Cadet
Datum registracije: Feb 2005
Lokacija: Split<-->Vela Luka
Postovi: 592
|
pitanje za ispit :-)
pozdrav, imam jedno pitanje, iz operacijskih sustava : Objasnite zašto se varijable tipa klase (tj objekti) obično alociraju na heap-a za razliku od varijabli nekog buit-intipa (npr. Integer , char....) bilo bi super ako netko zna da napise do sutra, kad mi je ispit, thx :-)
__________________
|
![]() |
![]() |
![]() |
#2 |
Premium
Datum registracije: Mar 2004
Lokacija: Bjelovar/Zagreb
Postovi: 357
|
Objekti se stavljaju na heap jer su preveliki za stog. Naime, stog je ogranicene velicine. Varijable primitivnih tipova zauzimaju veoma malo mjesta pa mogu na stog. Objekti mogu biti ogromni (tisucama puta veci od npr. nekog inta) pa idu na heap, dok se na stog pohrani samo referenca na objekt. Vjerojatno postoji jos neki razlog, ali ovo je valjda jedan od glavnih... |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
#3 |
only fool, not a horse
Datum registracije: Apr 2008
Lokacija: near zgb
Postovi: 1,280
|
a zasto je stog ogranicene velicine? sto se nemoze stog implementirat pomocu liste, pointera, neceg vec? nagadjam da idu na heap zbog funkcija koje se koriste (tj mogli bi na stog ako ti odgovara redosljed ubacivanja izbacivanja i slicno), mozda je bitno to sto je hrpa sortirana,.. uglavnom najvaznije je sto ces poslije raditi sa tim objektima... |
![]() |
![]() |
![]() |
#4 | |
Premium
Datum registracije: Mar 2004
Lokacija: Bjelovar/Zagreb
Postovi: 357
|
Citiraj:
![]() WeD@ovo pitanje se odnosilo na sistemski stog, odnosno sistemski heap, a ne o nekoj vlastitoj programskoj implementaciji stoga/heapa. Npr. dok ti u programu napises: int a = 1; Gdje se ta vrijednost pohranjuje? Odgovor je na stog. Ali ne neki tvoj stog realiziran poljem, listom ili koznacime nego sistemski stog koji je jedinstven za cijeli proces, a njegova realizacija ovisi o operacijskom sustavu. |
|
![]() |
![]() |
![]() |
#6 |
Space Cadet
Datum registracije: Feb 2005
Lokacija: Split<-->Vela Luka
Postovi: 592
|
Mislim da je ovo ok odgovor za ispit, hvala :-)
__________________
|
![]() |
![]() |
![]() |
#7 |
Registered User
Datum registracije: Jun 2007
Lokacija: cro
Postovi: 42
|
jedan od razloga je i taj da se nezna broj objekata za vrijeme kompajliranja(compile-time) nego se on dozna za vrijeme startanja programa(run-time) bilo od strane korinika(user input) ili neki drugi način, dakle onda se radi o dinamičkom alociranju memorije koja nije na stacku nego na heap-u. C za to koristi:malloc(),realloc(),free() C++:new,delete Jos jedna bitna stvar je da se alocirana memorija ne briše sama (program exit ili out of scope) vec je programer sam odgovoran za to( free() ili delete)... later.. gl.. |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
|
|