Se ho capito bene, quando un shared_ptr (da boost, tr1, std, qualunque) viene inizializzato con un puntatore a un oggetto appena assegnato, il costruttore di shared_ptr alloca una piccola quantità di memoria per contenere un conteggio di riferimenti per il puntatore gestisce. Cosa succede se quell'allocazione fallisce? Nel codice seguente:Cosa succede se un costruttore di shared_ptr non riesce?
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;
}
... sarà l'oggetto my_class
trapelato se lo shared_ptr non riesce ad allocare memoria per il conteggio dei riferimenti? Oppure il costruttore di shared_ptr si assume la responsabilità dell'eliminazione dell'oggetto?
Cheers. Ho acceso Google ma non ho trovato una risposta. Uno di questi giorni imparerò a controllare la fonte, cioè lo standard. :-) – bythescruff