Sto leggendo un libro ( Programmazione con thread POSIX di Butenhof, 1997) che utilizza C, e mi sono imbattuto nella seguente riga:
(void)free(data);
Qui, data
è solo un puntatore a una struttura allocata,
data = malloc(sizeof(my_struct_t));
Perché il risultato del free
cast void
?
Dalla mia comprensione di C, questo non sembra avere senso per due motivi:
- La funzione gratuita ritorna già
void
- Il codice non utilizza il valore restituito (non è nemmeno assegnato a una variabile)
Il libro è stato scritto nel 1997. È una specie di eredità?
L'autore menziona che gli esempi sono stati eseguiti su Digital Unix 4.0d, ma non riesco ancora a immaginare un motivo per lanciare il risultato di una funzione se non intendi usare quel risultato.
free()
come una stranezza nel libro che non devi emulare. Era semi-rilevante una volta tanto tempo fa, ma non è più rilevante.