![]() |
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 :-) |
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... |
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... |
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. |
ups.... :fiju:
|
Mislim da je ovo ok odgovor za ispit, hvala :-)
|
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.. |
Sva vremena su GMT +2. Sada je 15:45. |
Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 1999-2024 PC Ekspert - Sva prava pridržana ISSN 1334-2940
Ad Management by RedTyger