Czytam książkę ( Programowanie z wątkami POSIX autorstwa Butenhof, 1997), która używa C, i natrafiłem na następujący wiersz:
(void)free(data);
Tutaj data
jest tylko wskaźnikiem do przydzielonej struktury,
data = malloc(sizeof(my_struct_t));
Dlaczego jest wynikiem free
jest wrzucony do void
?
Z mojego rozumienia C wydaje się to nie mieć sensu z dwóch powodów:
- Funkcja bezpłatna już powraca
void
- Kod nie używa wartości zwracanej (nawet nie jest przypisany do zmiennej)
Książka została napisana w 1997 roku. Czy jest to jakaś spuścizna?
Autor wspomina, że przykłady uruchomiono na Digital Unix 4.0d, ale wciąż nie wyobrażam sobie powodu, aby kiedykolwiek rzucić wynik funkcji, jeśli nie zamierzasz użyć tego wyniku.
free()
jako osobliwość w książce, której nie musisz naśladować. Dawno temu było to na wpół trafne, ale już nie ma znaczenia.