es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  

Answer

  1. Avatar for 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 para A utilizando el operador new, pero no hay una comprobación del tamaño de num para asegurar que se pueda asignar memoria positiva. Además, la clase Dummy 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.

Comments are closed.