Je lis un livre ( Programmation avec des fils POSIX de Butenhof, 1997) qui utilise C, et je suis tombé sur la ligne suivante:
(void)free(data);
Ici, data
est juste un pointeur vers une structure allouée,
data = malloc(sizeof(my_struct_t));
Pourquoi le résultat free
est-il lancé void
?
D'après ma compréhension de C, cela ne semble pas logique pour deux raisons:
- La fonction gratuite revient déjà
void
- Le code n'utilise pas la valeur de retour (il n'est même pas affecté à une variable)
Le livre a été écrit en 1997. Est-ce une sorte d'héritage?
L'auteur mentionne que les exemples ont été exécutés sur Digital Unix 4.0d, mais je ne peux toujours pas imaginer une raison de lancer le résultat d'une fonction si vous n'utilisez pas ce résultat.
free()
comme une bizarrerie dans le livre que vous n'avez pas besoin d'émuler. Il y a longtemps, il était semi-pertinent, mais il n'est plus pertinent.