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.
Código (c) [Seleccionar]
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;
}