Si entiendo correctamente, cuando se inicializa un shared_ptr (de boost, tr1, std, whatever) con un puntero a un objeto recién asignado, el constructor de shared_ptr asigna una pequeña cantidad de memoria para mantener un recuento de referencia para el puntero maneja. ¿Qué sucede si falla esa asignación? En el siguiente código:¿Qué sucede si falla el constructor de shared_ptr?
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;
}
... se filtrará el objeto my_class
si el shared_ptr no puede asignar memoria para su cuenta de referencia? ¿O el constructor de shared_ptr asume la responsabilidad de eliminar el objeto?
Saludos. Inicié Google pero no encontré una respuesta. Uno de estos días aprenderé a verificar la fuente, es decir, el estándar. :-) – bythescruff