[ djmrky @ 07.06.2004. 13:01 ] @
kratko pitanjce:

Da li je potrebno oslobadjati resurse sa delete i kada se ne definise pointer sa new kao npr.

char *pIme = "Moje Ime";

ili se automatski oslobadja kad izadje iz scope-a

Hvala!
[ 4063 @ 07.06.2004. 13:21 ] @
Jap,
moras brisati sa delete svaku alokaciju koju si uradio sa new. Ako ne zelis mozes probati sa auto_ptr templateom (mislim da se nalazi u include fajlu <autoptr>):

Code:

class MojaKlasa
{
  // nesto
};

void foo() 
{
auto_ptr<MojaKlasa> a(new MojaKlasa);
     // radis sa a kao instancom klase MojaKlasa i nije potrebno
     // ali nije potrebno da brises memoriju
}


Bolje ti je da radis sa new i delete jer auto_ptr ima mnogo restrikcija koje moras paziti.
[ blaza @ 07.06.2004. 13:30 ] @
Kompajler ce alocirati prostor unutar Static Storage Area za string "Moje Ime" \0, i automatski ce osloboditi ovaj prostor.
new i delete se koriste za dinamicku alokaciju prostora u Heap-u. Posto nisi koristio new za alokaciju prostora, delete nije dozvoljeno koristiti.
Static Storage Area je blok memorije fiksne velicine, alocira se pri startu programa a oslobadja se na zavrsetku rada programa. Znaci, kada napustis scope, prostor se ne oslobadja sve dok je program aktivan.