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

objekat na staku ili heapu?

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

[ Pregleda: 1092 | Odgovora: 7 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Valerij Zajcev
junior developer, Hermes Soft Lab
Kragujevac

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

Sajt: www.hermes-softlab.co.yu


Profil

icon objekat na staku ili heapu?04.08.2007. u 21:12
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?
Iso ciga preko granice i zaustavi ga pandur i pita:
"Gde ces cigo!?", a ciga ce njemu:
"Sad u pi*** ma*** kad si me u'vatio!".
04.08.2007. u 21:12 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: objekat na staku ili heapu?04.08.2007. u 23:10
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).

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
04.08.2007. u 23:10 

Nedeljko
Nedeljko Stefanovic

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



Profil

icon Re: objekat na staku ili heapu?05.08.2007. u 00:48
Kada koristi STL, prostor se takođe rezerviše na heap-u. Naravno, to je zato što u tim šablonima "čuče" new naredbe.
05.08.2007. u 00:48 

Dragi Tata

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

Sajt: www.novetehnologije.com


Profil

icon Re: objekat na staku ili heapu?05.08.2007. u 02:22
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.
05.08.2007. u 02:22 

Valerij Zajcev
junior developer, Hermes Soft Lab
Kragujevac

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

Sajt: www.hermes-softlab.co.yu


Profil

icon Re: objekat na staku ili heapu?05.08.2007. u 13:04
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?

Iso ciga preko granice i zaustavi ga pandur i pita:
"Gde ces cigo!?", a ciga ce njemu:
"Sad u pi*** ma*** kad si me u'vatio!".
05.08.2007. u 13:04 

Dragi Tata

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

Sajt: www.novetehnologije.com


Profil

icon Re: objekat na staku ili heapu?05.08.2007. u 15:45
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.
05.08.2007. u 15:45 

Nedeljko
Nedeljko Stefanovic

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



Profil

icon Re: objekat na staku ili heapu?05.08.2007. u 17:01
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.
05.08.2007. u 17:01 

DjoleReject
Djordje Knezevic
Zvezdara

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



Profil

icon Re: objekat na staku ili heapu?09.08.2007. u 21:01
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...
09.08.2007. u 21:01 

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

[ Pregleda: 1092 | Odgovora: 7 ]

Postavi temu Odgovori

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