Obiekty na stercie, a ich zwalnianie
Ostatnio zmodyfikowano 2015-08-14 13:54
kolesgit Temat założony przez niniejszego użytkownika |
Obiekty na stercie, a ich zwalnianie » 2015-08-14 13:23:30 Witam. Nurtuje mnie pytanie, gdy mam przykładowy kod: void foo() { sp<ABuffer> bufor = new ABuffer(data_size + 1); }
Obiekt bufor jest alokowany trwale na stercie, przy czym trzeba pamiętać o operatorze delete, jeżeli chcemy zwolnić blok. Dlaczego podczas kiedy oglądam log z backtrace'a / stacktrace'a, widzę odwołanie do destruktora, skoro nigdzie jawnie go nie wołam? Kolejne pytanie, czy jest możliwość nadpisania adresu destruktora inną funkcją tej samej klasy na stercie ? |
|
kolesgit Temat założony przez niniejszego użytkownika |
» 2015-08-14 13:54:57 Już po problemie, po prostu mechanizmy takie jak auto_ptr, unique_ptr oraz shared_ptr w C++, pamiętają o automatycznym wołaniu destruktora po wyjściu z funkcji. Dla zainteresowanych, mechanizmy te nazywają się "smart pointers" - wskaźniki inteligentne, polecam, bardzo wygodne w zastosowaniu. |
|
« 1 » |