Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C# - štruktúra v halde?

Nemusis ptz standardne new je riesene tak ze pri nedostatku RAM program skonci (tusim ze vtedy ked neni odchytena exception, a exceptiony mozes chytat aj v nadradenej funkcii). A ked skonci program tak OS uvolni vsetko co alokoval.

A keby si mal slusne rieseny destruktor objektu tak ten dealokuje vsetko co bolo alokovane. Napr.
cDynamickeMemory class {
void *ptr;
UINT allocated;
atd
}
... konstruktor nastavi ptr=NULL, nejaka metoda alokuje apod, a destruktor
~cDynamickeMemory() {
if(ptr)
free(ptr);
}

Kedykolvek urobis return z funkcie tak sa volaju destruktory vsetkych lokalnych premennych (vcetne takychto objektov) a uvolni sa len to co bolo naalokovane. Vobec sa nemusis starat o dealokaciu a robis return z funkcie kedykolvek a vsetko bude korektne.
Alebo ak fcie pouzivaju new namiesto malloc tak namiesto free bude delete.

Moznosti ako riesit dynamicku pamat je miliarda, len si treba spravne navrhnut objekty alebo pouzit napr. MFC kniznicu apod.
P.S: takyto objekt sa da predavat aj medzi funkciami a aj ako navratova hodnota fcie, priklad napr. MFC CString...

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny