Saya sedang bekerja pada basis kode lama dan hampir setiap doa gratis () menggunakan gips pada argumennya. Sebagai contoh,
free((float *)velocity);
free((float *)acceleration);
free((char *)label);
di mana setiap pointer adalah tipe yang sesuai (dan cocok). Saya tidak melihat gunanya melakukan ini sama sekali. Itu kode yang sangat lama, jadi saya bertanya-tanya apakah ini masalah K&R. Jika demikian, saya sebenarnya ingin mendukung kompiler lama yang mungkin membutuhkan ini, jadi saya tidak ingin menghapusnya.
Apakah ada alasan teknis untuk menggunakan gips ini? Saya bahkan tidak melihat banyak alasan pragmatis untuk menggunakannya. Apa gunanya mengingatkan diri kita tentang tipe data sebelum membebaskannya?
EDIT: Pertanyaan ini bukan duplikat dari pertanyaan lain. Pertanyaan lain adalah kasus khusus dari pertanyaan ini, yang saya pikir jelas jika pemilih dekat akan membaca semua jawaban.
Colophon: Saya memberi "const answer" tanda centang karena itu adalah alasan nyata mengapa hal ini perlu dilakukan; Namun, jawaban tentang hal itu menjadi kebiasaan pra-ANSI C (setidaknya di antara beberapa programmer) tampaknya menjadi alasan itu digunakan dalam kasus saya. Banyak poin bagus oleh banyak orang di sini. Terima kasih atas kontribusi kamu.
void*
dalam standar C, tetapi hanya char*
. Jadi jika temuan arkeologis Anda mengungkapkan kode yang melepaskan parameter ke (), saya percaya itu harus dari periode waktu itu, atau ditulis oleh makhluk dari waktu itu. Saya tidak dapat menemukan sumber untuk ini, jadi saya akan menahan diri untuk tidak menjawab.