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

dealokacija prostora koji zauzme string

[es] :: C/C++ programiranje :: C/C++ za početnike :: dealokacija prostora koji zauzme string

[ Pregleda: 2426 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

drki89
Igor Drljić
Prhovo

Član broj: 127027
Poruke: 56
*.etf.rs.



+4 Profil

icon dealokacija prostora koji zauzme string29.01.2010. u 18:52 - pre 173 meseci
Pogledao sam kako izgleda klasa string na jednom sajtu i primetio da nema destruktor. Probao sam da upoterbim operator delete nad objektom klase string, ali prevodilac to ne dozvoljava. Kako se onda dealocira prostor koji string zauzme?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: dealokacija prostora koji zauzme string29.01.2010. u 19:19 - pre 173 meseci
Kada je objekat alociran na heap-u (new) onda tipicno ide i unistavanje (delete). Ako je objekat na stack-u, bice automatski uklonjen nakon izlaska iz tog bloka.

Dakle:
Code:

{
    // HEAP, treba delete
    NekaKlasa *objekat = new NekaKlasa();
    // ...
    delete objekat;
}


Code:

{
    // STACK, ne treba eksplicitno unistavanje
    NekaKlasa objeka;
    // ...
}
// objekat se unistava automatski nakon izlaska iz bloka {}


Mozda si na to mislio?

Inace, kod implementacije slozenijih klasa u C++, koriste se razni Design Pattern-i, sve je u template-ima, RAII pristup osiguravanja dealokacije, pa je nekada tesko pratiti gde se i kako vrsi oslobadjanje memorije.

Pogledaj i ovde, bilo je dosta tema o tome:
http://www.elitesecurity.org/t320974
 
Odgovor na temu

drki89
Igor Drljić
Prhovo

Član broj: 127027
Poruke: 56
217.169.223.*



+4 Profil

icon Re: dealokacija prostora koji zauzme string29.01.2010. u 20:21 - pre 173 meseci
Da, na to sam mislio. Hvala!

Znam da se operatorom new alocira prostor na hipu, a kako funkcionise stek?
Je l' na njemu program automatski alocira i brise prostor?
Da li se sve promenljive stavljaju na stek kada se udje u deo programa u kom su vidljive, a brisu kada se njihov doseg napusti?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: dealokacija prostora koji zauzme string29.01.2010. u 21:39 - pre 173 meseci
Na tom principu (garantovanog unistavanja objekta sa stacka nakon izlaska iz bloka) funkcionise takozvani RAII pattern, i cesto se koristi da se osigura izvrsavanje bitnog dela koda cak iako nesto "krene po zlu" pre nego se dodje do njega (recimo neko bitno oslobadjanje memorije ili osiguravanje da sistem ostane u ispravnom stanju nakon nekog neocekivanog izuzetka).

Ovde imas neke primene RAII koncepta:

(disable/enable vidljivosti nekih kontrola)
http://www.elitesecurity.org/p1232880

(kriticne sekcije i thread safe kod)
http://www.elitesecurity.org/p1745579
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: dealokacija prostora koji zauzme string

[ Pregleda: 2426 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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