[ 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! |
[ djmrky @ 07.06.2004. 13:01 ] @
[ 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. Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|