Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ianmorar03 en 14 Abril 2020, 04:02 am



Título: Implementacion de una COLA en C, Error de ejecucion
Publicado por: ianmorar03 en 14 Abril 2020, 04:02 am
Buenas, alguien me podria ayudar con este error, que significa? Busque en la web y revise mi codigo y todo esta bien, no entiendo mucho C, estoy empezando. Estoy programando en Linux, con consola, no se si alguien me pudiera ayudar, el error es el siguiente:

"Segmentation fault (core dumped)"

Estoy implementando una "Cola" (FIFO). El codigo compila sin errores, pero a la hora de ejecutarlo me muestra ese mensaje. Encontre que el problema esta en la funcion "enqueue", pero no se como solucionarlo, aqui la funcion:

Código
  1. void enqueue(int p, bool t){
  2.    struct Nodo *temp;
  3.    temp=malloc(sizeof(struct Nodo));
  4.    temp->carro->placa = p;
  5.    temp->carro->tipo = t;
  6.    temp->sig=NULL;
  7.    if (head == NULL){
  8.        head = temp;
  9.        tail = temp;
  10.    }
  11.    else{
  12.        tail->sig = temp;
  13.        tail = temp;
  14.    }
  15. }
  16.  

Si alguien me pudiera ayudar seria genial.
Gracias de antemano.


Título: Re: Implementacion de una COLA en C, Error de ejecucion
Publicado por: fary en 14 Abril 2020, 07:44 am
¿Quizás así?

Código
  1. void enqueue(int p, bool t){
  2.    struct Nodo *temp;
  3.    temp=malloc(sizeof(struct Nodo));
  4.    temp->carro.placa = p;
  5.    temp->carro.tipo = t;
  6.    temp->sig=NULL;
  7.    if (head == NULL){
  8.        head = temp;
  9.        tail = temp;
  10.    }
  11.    else{
  12.        tail->sig = temp;
  13.        tail = temp;
  14.    }
  15. }

saludos.


Título: Re: Implementacion de una COLA en C, Error de ejecucion
Publicado por: RayR en 14 Abril 2020, 16:42 pm
Dado que usas el operador de flecha con carro y tu código compila sin errores, ese miembro es un puntero, pero no estás reservando memoria para él. Haz eso y debería solucionarse tu problema.


Título: Re: Implementacion de una COLA en C, Error de ejecucion
Publicado por: ianmorar03 en 15 Abril 2020, 00:57 am
Dado que usas el operador de flecha con carro y tu código compila sin errores, ese miembro es un puntero, pero no estás reservando memoria para él. Haz eso y debería solucionarse tu problema.

Efectivamente RayR, el problema se soluciona reservando la memoria para el carro, dado que es un problema de Segmentacion, no se puede acceder a esa parte en memoria por que no existe, a diferencia de C++ los punteros no trabajan de la misma manera en C.
Gracias por sus aportes.