Hola, tal y como explico en el título, inexplicablemente estoy teniendo un segmentacion fault al intentar liberar memoria de un puntero previamente creado con malloc, agradezco cualquier aporte, os pego la función, ojo, el error ocurre SOLO cuando paso por segunda vez por dentro de la función, la primera vez funciona sin problema.
void cleanScrean(){
#ifdef WINDOWS
system("CLS");
#elif defined UNIX
system("clear");
#endif
}
void cleanBuffer(){
int ch;
while ((ch = getchar()) != '\n' && ch != EOF)
;
}
Viajero* crearViajero(){
Viajero * viajero = (Viajero *) malloc(sizeof(Viajero));
cleanScrean();
char * nombreTemp = (char *) malloc(sizeof(char) * 255);
printf("Nombre del viajero.\n");
cleanBuffer();
fgets(nombreTemp, 255 , stdin);
viajero->nombre = (char *) malloc(sizeof(strlen(nombreTemp)));
strncpy(viajero->nombre, nombreTemp , strlen(nombreTemp));
printf("Apellido del viajero.\n");
fgets(nombreTemp, 255 , stdin);
viajero->apellido = (char *) malloc(sizeof(strlen(nombreTemp)));
strncpy(viajero->apellido, nombreTemp , strlen(nombreTemp));
free(nombreTemp);
return viajero;
}
malloc(sizeof(strlen(x)))
No tiene sentido.
Usa
malloc(1+strlen(x))
Que pide memoria por el tamaño en bytes del string x
Otra cosa que note, pero que no es un problema, realmente, aunque es bueno saberlo es que sizeof(char) es siempre 1, no es necesario incluirlo.
Hola, gracias por el aporte, aunque no me soluciona el problema, continúa lanzando el mismo error, nadie se ha topado con esto?
Saludos