Jeśli rozumiem poprawnie, gdy shared_ptr (z boost, tr1, std, cokolwiek) jest zainicjalizowane wskaźnikiem do świeżo przydzielonego obiektu, konstruktor shared_ptr przydziela niewielką ilość pamięci do przechowywania licznika referencyjnego dla wskaźnika zarządza. Co się stanie, jeśli alokacja się nie powiedzie? W poniższym kodzie:Co się stanie, jeśli konstruktor shared_ptr zakończy się niepowodzeniem?
class my_class {};
void my_func(shared_ptr<my_class> arg);
int main(int argc, char* argv[])
{
my_func(shared_ptr<my_class>(new my_class()));
return 0;
}
... będzie przedmiotem my_class
być wyciekły jeśli shared_ptr nie może przydzielić pamięci dla jego liczenia odniesienia? Czy konstruktor shared_ptr bierze odpowiedzialność za usunięcie obiektu?
Pozdrawiam. Uruchomiłem Google, ale nie znalazłem odpowiedzi. Któregoś dnia nauczę się sprawdzać źródło - czyli standard. :-) – bythescruff