Estou lendo um livro ( Programming with POSIX Threads by Butenhof, 1997) que usa C e me deparei com a seguinte linha:
(void)free(data);
Aqui, data
é apenas um ponteiro para uma estrutura alocada,
data = malloc(sizeof(my_struct_t));
Por que o resultado de free
ser lançado para void
?
Do meu entendimento de C, isso não parece fazer sentido por dois motivos:
- A função livre já retorna
void
- O código não está usando o valor de retorno (nem está sendo atribuído a uma variável)
O livro foi escrito em 1997. Isso é algum tipo de coisa legada?
O autor menciona que os exemplos foram executados no Digital Unix 4.0d, mas ainda não consigo imaginar uma razão para lançar o resultado de uma função se você não for usar esse resultado.
free()
como uma singularidade no livro que você não precisa imitar. Era semi-relevante há muito tempo, mas não é mais relevante.