El siguiente ejemplo deja una posible pérdida de memoria porque el destructor no se ejecuta para el objeto en el que se ejecuta la excepción durante la ejecución de su constructor. ¿Dónde manejo esta fuga de memoria?Captura de excepciones en el constructor
#include <exception>
class MyClass {
public:
MyClass()
{
c = new char[5];
throw std::runtime_error("test");
}
~MyClass()
{
delete[] c;
}
private:
char *c;
};
int main()
{
try
{
MyClass Obj;
}
catch (std::runtime_error)
{
}
}
¿Qué necesita para este voto a favor? RAII es la mejor manera de hacerlo, y si alguien dice lo contrario, es incorrecto. Si se siente responsable de rechazar votos, ¿se siente lo suficientemente responsable como para explicarnos por qué? Y si no puedes y solo * sientes * que esto está mal, entonces no estás lo suficientemente calificado para vencer, deja que alguien más haga eso. –
es esta solución basada en cosas relacionadas con C++ 11? – user103214
No, esto es C++ 03. –