Я читаю книгу ( Програмування з POSIX Threads від Butenhof, 1997), яка використовує C, і я натрапив на наступний рядок:
(void)free(data);
Ось dataлише вказівник на виділену структуру,
data = malloc(sizeof(my_struct_t));
Чому результат freeкинуто void?
З мого розуміння С, це, мабуть, не має сенсу з двох причин:
- Безкоштовна функція вже повертається
void - Код не використовує значення, що повертається (він навіть не присвоюється змінній)
Книга була написана в 1997 році. Це якась спадщина?
Автор згадує, що приклади були запущені на Digital Unix 4.0d, але я досі не можу уявити собі причину коли-небудь передавати результат функції, якщо ви не збираєтесь використовувати цей результат.
free()як до дивацтва у книзі, яку вам не потрібно наслідувати. Це було напіврелевантним колись давно, але вже не актуальне.