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.

Eliminar un puntero doble.

¿Cómo eliminar correctamente una matriz de puntero doble? Cuando intenté este código, memcheck me dijo “Uso del valor no inicializado de tamaño 8” y “Escritura no válida de tamaño 4”. No pude averiguar dónde me equivoqué.

struct Node
{
    int value;
    Node* next;
};

int main()
{

Node** doublePtrNode= new Node* [10];

 for (unsigned int i = 0; i < 10; i++)
{

    doublePtrNode[i]->value=i;

}

for (unsigned int i = 0; i < 10; i++)
{
    delete doublePtrNode[i];
}

delete[] doublePtrNode;

return 0;


}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para eliminar correctamente un array de puntero doble, es necesario eliminar cada elemento del array antes de eliminar el array en sí. El código debe modificarse de la siguiente manera:

    struct Node
    {
        int value;
        Node* next;
    };
    
    
    int main()
    {
    
        Node** doublePtrNode= new Node* [10];
    
         for (unsigned int i = 0; i < 10; i++)
        {
            doublePtrNode[i] = new Node; // Asignar memoria para cada elemento del array
            doublePtrNode[i]->value=i;
    
        }
    
        for (unsigned int i = 0; i < 10; i++)
        {
            delete doublePtrNode[i]; // Eliminar cada elemento del array
        }
    
        delete[] doublePtrNode; // Eliminar el array en sí
    
        return 0;
    }
    

Comments are closed.