Tôi đang đọc một cuốn sách ( Lập trình với Chủ đề POSIX của Butenhof, 1997) sử dụng C, và tôi đã xem qua dòng sau:
(void)free(data);
Ở đây, data
chỉ là một con trỏ tới một cấu trúc được phân bổ,
data = malloc(sizeof(my_struct_t));
Tại sao kết quả của free
việc được chọn void
?
Theo hiểu biết của tôi về C, điều này dường như không có ý nghĩa vì hai lý do:
- Hàm miễn phí đã trả về
void
- Mã này không sử dụng giá trị trả về (thậm chí nó không được gán cho một biến)
Cuốn sách được viết vào năm 1997. Đây có phải là một thứ di sản?
Tác giả đề cập rằng các ví dụ đã được chạy trên Digital Unix 4.0d, nhưng tôi vẫn không thể tưởng tượng được lý do để đưa ra kết quả của hàm nếu bạn sẽ không sử dụng kết quả đó.
free()
là một điều kỳ lạ trong cuốn sách mà bạn không cần phải mô phỏng. Nó đã từng có liên quan một thời gian dài trước đây, nhưng nó không còn phù hợp nữa.