Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

objekat na staku ili heapu?

[es] :: C/C++ programiranje :: C/C++ za početnike :: objekat na staku ili heapu?

[ Pregleda: 3293 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.dynamic.sbb.co.yu.



+2 Profil

icon objekat na staku ili heapu?04.08.2007. u 21:12 - pre 179 meseci
Code:

class test
{}
int main()
{
      test t1; //jel t1 sada na steku ili heapu?
      // test t1 = new test();         jel ovo znaci nesto?
}


Nabasao sam na nesto, sa new keyword mogu da rezervisem mesto na heapu, ali primer je sa pokazivacem, cat *pCat = new cat, ovo je valjda objekat na heapu, ali gde je onda ovaj objekat "t1" iz prethodnog koda?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4890
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+634 Profil

icon Re: objekat na staku ili heapu?04.08.2007. u 23:10 - pre 179 meseci
Dinamička dodela (sa new) ide na heap, dok ostalo ide na stack.

P.S.
Samo što si u tvom primeru za dinamičku dodelu zaboravio jednu pointer zvezdicu (izgleda da te je .NET totalno očarao).
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8574
*.sr.gov.yu.



+2773 Profil

icon Re: objekat na staku ili heapu?05.08.2007. u 00:48 - pre 179 meseci
Kada koristi STL, prostor se takođe rezerviše na heap-u. Naravno, to je zato što u tim šablonima "čuče" new naredbe.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.hsd1.ma.comcast.net.



+6 Profil

icon Re: objekat na staku ili heapu?05.08.2007. u 02:22 - pre 179 meseci
Citat:
Nedeljko: Kada koristi STL, prostor se takođe rezerviše na heap-u. Naravno, to je zato što u tim šablonima "čuče" new naredbe.


Svejedno. Kad deklarišeš npr vector na steku, on je na steku. Interno je sadržaj naravno na heapu (mada i ne mora da bude - možeš da koristiš custom allocator), ali te to najčešće ne interesuje. Objekat je uništen na izlasku iz opsega i sva memorija automatski počišćena.
 
Odgovor na temu

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.dynamic.sbb.co.yu.



+2 Profil

icon Re: objekat na staku ili heapu?05.08.2007. u 13:04 - pre 179 meseci
Citat:

...zvezdicu (izgleda da te je .NET totalno očarao).

Ehhh...
dobro znaci:
Code:

test t1(); // ovo je na steku
test *t1 = new test(); //sa ovim alociram memoriju na heapu, nadam se da sam u pravu :)

Posto do sada jos nisam naleteo na primere u c++ gde se radi ovo sa heapom vec samo "test t1 // primer", onda me zanima kada je bolje koristiti prvi a kada drugi(dinamicki) nacin instanciranja objekta?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.hsd1.ma.comcast.net.



+6 Profil

icon Re: objekat na staku ili heapu?05.08.2007. u 15:45 - pre 179 meseci
Citat:
Valerij Zajcev: Ehhh...
Code:

test t1(); // ovo je na steku



Samo izbaci te zagrade, inače će kompajler tu liniju da protumači kao deklaraciju funkcije t1 koja vraća objekat tipa test.

Citat:
Valerij Zajcev: kada je bolje koristiti prvi a kada drugi(dinamicki) nacin instanciranja objekta?


Najprostije moguće: kad god možeš deklariši ga na steku, a kad ne možeš onda na heap-u.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8574
*.sr.gov.yu.



+2773 Profil

icon Re: objekat na staku ili heapu?05.08.2007. u 17:01 - pre 179 meseci
Citat:
Dragi Tata: Svejedno. Kad deklarišeš npr vector na steku, on je na steku.

Objekat tipa vector je na steku, ali sadržaj vektora je naravno na heap-u, kao što i sam kažeš. Međutim, u principu taj sadržaj zauzima više prostora od samog objekta tipa vector.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: objekat na staku ili heapu?09.08.2007. u 21:01 - pre 179 meseci
vector nije nista drugo nego "fensi lista". Lista je gomila pointera, pa su svi podaci zapravo na heap-u.
Citat:
Dragi Tata: Najprostije moguće: kad god možeš deklariši ga na steku, a kad ne možeš onda na heap-u.


Samo pazi na velike nizove i teraj ih na heap.
De si Deda...
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: objekat na staku ili heapu?

[ Pregleda: 3293 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.