ฉันกำลังทำงานกับฐานรหัสเก่าและทุก ๆ การเรียกใช้ฟรี () ใช้การส่งผ่านการโต้แย้ง ตัวอย่างเช่น,
free((float *)velocity);
free((float *)acceleration);
free((char *)label);
โดยที่ตัวชี้แต่ละตัวเป็นประเภทที่ตรงกัน (และการจับคู่) ฉันไม่เห็นจุดที่จะทำสิ่งนี้เลย มันเป็นรหัสเก่ามากดังนั้นฉันจึงสงสัยว่ามันจะเป็นของ K&R หรือเปล่า ถ้าเป็นเช่นนั้นฉันต้องการสนับสนุนคอมไพเลอร์ตัวเก่าที่อาจจำเป็นต้องใช้ดังนั้นฉันจึงไม่ต้องการลบออก
มีเหตุผลทางเทคนิคในการใช้การปลดเปลื้องเหล่านี้หรือไม่ ฉันไม่เห็นเหตุผลที่ใช้ประโยชน์ได้มากนัก อะไรคือจุดที่ทำให้เรานึกถึงประเภทข้อมูลที่ถูกต้องก่อนที่จะทำให้เป็นอิสระ
แก้ไข: คำถามนี้ไม่ได้ซ้ำกับคำถามอื่น คำถามอื่นเป็นกรณีพิเศษของคำถามนี้ซึ่งฉันคิดว่าชัดเจนว่าผู้มีสิทธิเลือกตั้งอย่างใกล้ชิดจะอ่านคำตอบทั้งหมดหรือไม่
Colophon: ฉันจะให้เครื่องหมายถูก "ตอบ const" เพราะมันเป็นเหตุผลที่แท้จริงที่ทำให้ต้องมีเหตุผลที่แท้จริงว่าทำไมต้องทำสิ่งนี้ อย่างไรก็ตามคำตอบเกี่ยวกับการเป็น pre-ANSI C ที่กำหนดเอง (อย่างน้อยในบรรดาโปรแกรมเมอร์) ดูเหมือนจะเป็นเหตุผลที่ใช้ในกรณีของฉัน จุดที่ดีมากมายจากคนมากมายที่นี่ ขอบคุณสำหรับการสนับสนุนของคุณ
void*
ใน pre-C มาตรฐาน char*
แต่เพียง ดังนั้นหากการค้นพบทางโบราณคดีของคุณเปิดเผยรหัสที่หล่อพารามิเตอร์ให้เป็นอิสระ () ฉันเชื่อว่ามันจะต้องมาจากช่วงเวลานั้นหรือเขียนโดยสิ่งมีชีวิตในเวลานั้น ฉันไม่สามารถหาแหล่งที่มาสำหรับเรื่องนี้ได้ดังนั้นฉันจะละเว้นจากการตอบรับ