Violación de segmento('core' generado)

Violación de segmento('core' generado)

de Bruno Capote Hernández -
Número de respuestas: 3

El programa me queda apuntando a algo no inicializado en el momento que hago l = l->sig, tengo entendido
que esa es la forma correcta de avanzar. Qué me estoy olvidando?

.

En respuesta a Bruno Capote Hernández

Re: Violación de segmento('core' generado)

de Libertad Tansini -

Hola Bruno, 

Sólo pedís memoria para un nodo con la instrucción: lista l=new nodo;

por lo tanto a continuación de ese nodo no hay otro!!

Deberías pedir más memoria, por ejemplo con: l->sig= new nodo;

EL código podría ser así:

  lista l=new nodo;

  l->elem=10;

  printf("\n%d", l->elem);

  l->sig= new nodo;

  l=l->sig;

  l->elem=15;

  printf("\n%d", l->elem);

saludos, libertad



En respuesta a Bruno Capote Hernández

Re: Violación de segmento('core' generado)

de Lucas Fernandez Corbo -
Buenas, la asignación l = l->sig; te deja l apuntando a algo no inicializado como decís ya que vos al hacer list l = new nodo; simplemente estas creando un solo nodo y no estas definiendo ningún otro, tampoco estas inicializando l->sig con NULL o algún otro valor valido, por lo tanto al hacer l->elem = 15; tira segmantation fault porque estas intentando acceder a un lugar no valido.
En el caso de querer agregar mas nodos por ejemplo, podrías hacerte una función que inserte nodos al final de la lista o algo por el estilo, así podes iterar en ella con los elementos que haya, ya que de momento solo pedís memoria para uno.

Espero este paint sea ilustrativo para que veas lo que pasa, lo de abajo es una forma de poder engancharle el nodo con elem 15 que queres (aunque estaria bueno que siempre el nodo final apunte a NULL y otras cosas mas, pero es a modo de ilustración para que puedas debuggear mejor).
Prog List