Estoy leyendo un libro ( Programación con hilos POSIX de Butenhof, 1997) que usa C, y me encontré con la siguiente línea:
(void)free(data);
Aquí, data
es solo un puntero a una estructura asignada,
data = malloc(sizeof(my_struct_t));
¿Por qué es el resultado de free
ser lanzado a void
?
Desde mi entendimiento de C, esto no parece tener sentido por dos razones:
- La función libre ya regresa
void
- El código no usa el valor de retorno (ni siquiera se le asigna a una variable)
El libro fue escrito en 1997. ¿Es esto una especie de legado?
El autor menciona que los ejemplos se ejecutaron en Digital Unix 4.0d, pero todavía no puedo imaginar una razón para emitir el resultado de una función si no va a utilizar ese resultado.
free()
como una rareza en el libro que no necesita emular. Era semi-relevante hace mucho tiempo, pero ya no es relevante.