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.

Siempre obtengo errores de segmentación.

Siempre obtengo “segmentation fault (core dumped)” en c++ y siempre dice que head -> next cómo asignar memoria para eso. Estoy apenado, vengo de Java.

“`cpp
#include <iostream>
using namespace std;

class Node
{
public:
int data;
Node *next;
};

class lisp
{
public:
Node *head;
void create(int d)
{
this->head = new Node;
this->head->data = d;
cout << head->data;
}
void insert(int d)
{
Node *n = head;
Node *add = new Node;
add->data = d;
cout << head->next << endl;
}
};

int main()
{
lisp test;
test.create(0);
test.insert(1);
test.insert(2);
return 0;
}
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás experimentando un error de violación de segmento en tu programa de C++. Este error ocurre cuando un programa intenta acceder a una ubicación de memoria a la que no tiene acceso.

    Al examinar tu código, un posible problema podría ser con la asignación de memoria del nodo “add” en la función “insert”. Estás intentando establecer el valor de “add->data” sin asignarle ningún espacio en memoria primero. Esto puede provocar un comportamiento indefinido y un error de violación de segmento.

    Para solucionar este problema, puedes asignar memoria para el nodo “add” utilizando el operador “new” antes de asignarle un valor a su miembro de datos. Por ejemplo:

    void insert(int d)
    {
      Node *n = head;
      Node *add = new Node; // asignar memoria para el nuevo nodo
      add->data = d;
      cout << head->next << endl; 
    }
    

    Al asignar memoria para el nodo “add”, te aseguras de que tenga una ubicación de memoria válida para almacenar sus datos, evitando así el error de violación de segmento.

Comments are closed.