ฉันกำลังอ่านหนังสือ ( การเขียนโปรแกรมด้วย POSIX Threadsโดย Butenhof, 1997) ที่ใช้ C และฉันเจอบรรทัดต่อไปนี้:
(void)free(data);
นี่data
เป็นเพียงตัวชี้ไปยังโครงสร้างที่ปันส่วน
data = malloc(sizeof(my_struct_t));
ทำไมเป็นผลมาจากfree
การถูกโยนไปvoid
?
จากความเข้าใจของฉันเกี่ยวกับ C สิ่งนี้ดูเหมือนจะไม่สมเหตุสมผลด้วยสองเหตุผล:
- ฟังก์ชันฟรีส่งคืนแล้ว
void
- รหัสไม่ได้ใช้ค่าส่งคืน (มันไม่ได้ถูกกำหนดให้กับตัวแปร)
หนังสือเล่มนี้เขียนขึ้นในปี 1997 นี่เป็นเรื่องของมรดกหรือเปล่า
ผู้เขียนกล่าวว่าตัวอย่างทำงานบน Digital Unix 4.0d แต่ฉันก็ยังนึกภาพไม่ออกว่ามีเหตุผลอะไรที่จะส่งผลของฟังก์ชั่นหากคุณไม่ได้ใช้ผลลัพธ์นั้น
free()
เป็นเรื่องแปลกในหนังสือที่คุณไม่จำเป็นต้องเลียนแบบ มันมีความเกี่ยวข้องกึ่งนานมาแล้ว แต่มันไม่เกี่ยวข้องอีกต่อไป