¿Este código causará una pérdida de memoria?¿Qué sucede con la memoria asignada por `new` si el constructor lanza?
#include <stdexept>
class MyClass
{
public:
MyClass()
{
throw std::runtime_error("Test");
}
};
int main()
{
try
{
MyClass * myClass = new MyClass;
}
catch (const std::exception & exc)
{
// Memory leak?
}
return 0;
}
La memoria asignada por new
nunca se elimina. ¿Esto se soluciona internamente, o es una pérdida de memoria real?
+1 para probarlo con Valgrind. – DarkDust