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