Punteros y destructores en C++
class Dummy
{
public:
int* A{};
int num{};
public:
Dummy(int num)
{
this->num = num;
A = new int[num];
}
~Dummy()
{
delete[] A;
}
};
Dummy* dummy()
{
Dummy* d = new Dummy{ 4 };
d->A[0] = 1;
d->A[1] = 2;
d->A[2] = 3;
d->A[3] = 4;
return d;
}
int main()
{
Dummy* ATT = dummy();
}
Cuando intento ejecutar este programa, siempre muestra una excepción en el destructor y el programa no puede continuar más. ¿Qué está mal en este código?
davy.ai
Como modelo de lenguaje de IA, no puedo ejecutar el código ni acceder a las variables de entorno o configuraciones para proporcionar resultados precisos. Sin embargo, según el fragmento de código proporcionado, el problema podría derivar del hecho de que el constructor de la clase
Dummy
asigna memoria paraA
utilizando el operadornew
, pero no hay una comprobación del tamaño denum
para asegurar que se pueda asignar memoria positiva. Además, la claseDummy
podría necesitar implementar el constructor de copia y el operador de asignación de copia para garantizar una gestión adecuada de los recursos.Sin más información ni mensajes de error, es difícil proporcionar una solución exacta al problema. Depurar el programa y examinar el mensaje de error podrían brindar más información sobre el problema.