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:
void enqueue(int p, bool t){
struct Nodo *temp;
temp=malloc(sizeof(struct Nodo));
temp->carro->placa = p;
temp->carro->tipo = t;
temp->sig=NULL;
if (head == NULL){
head = temp;
tail = temp;
}
else{
tail->sig = temp;
tail = temp;
}
}
Si alguien me pudiera ayudar seria genial.
Gracias de antemano.
¿Quizás así?
void enqueue(int p, bool t){
struct Nodo *temp;
temp=malloc(sizeof(struct Nodo));
temp->carro.placa = p;
temp->carro.tipo = t;
temp->sig=NULL;
if (head == NULL){
head = temp;
tail = temp;
}
else{
tail->sig = temp;
tail = temp;
}
}
saludos.
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.
Cita de: 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.
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.