[ Valerij Zajcev @ 04.08.2007. 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?
[ X Files @ 04.08.2007. 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).
[ Nedeljko @ 05.08.2007. 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.
[ Dragi Tata @ 05.08.2007. 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.
[ Valerij Zajcev @ 05.08.2007. 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?
[ Dragi Tata @ 05.08.2007. 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.
[ Nedeljko @ 05.08.2007. 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.
[ DjoleReject @ 09.08.2007. 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.