Ben eski bir kod tabanı üzerinde çalışıyorum ve hemen hemen ücretsiz () her çağrışımı kendi argümanı bir döküm kullanır. Örneğin,
free((float *)velocity);
free((float *)acceleration);
free((char *)label);
burada her işaretçi karşılık gelen (ve eşleşen) tiptedir. Bunu yapmanın bir anlamı yok. Çok eski bir kod, bu yüzden bir K&R şey olup olmadığını merak bıraktım. Eğer öyleyse, bunu gerektirebilecek eski derleyicileri desteklemek istiyorum, bu yüzden onları kaldırmak istemiyorum.
Bu kalıpları kullanmanın teknik bir nedeni var mı? Onları kullanmak için pragmatik bir neden bile görmüyorum. Veri tipini boşaltmadan hemen önce kendimize hatırlatmanın anlamı nedir?
EDIT: Bu soru diğer sorunun bir kopyası değil . Diğer soru, yakın seçmenlerin tüm cevapları okuyup okumadıklarının açık olduğunu düşündüğüm bu sorunun özel bir örneğidir.
Colophon: "Const answer" onay işaretini veriyorum çünkü bunun yapılması gerekebileceğinin gerçek bir sebebi; ancak, ANSI C öncesi bir özel (en azından bazı programcılar arasında) olmasının cevabı, benim durumumda kullanılmasının nedeni gibi görünüyor. Burada birçok kişi tarafından iyi noktalar. Katkılarınız için teşekkür ederiz.
void*
standart C'de hiç olmadığına inanıyorum , sadece char*
. Arkeolojik bulgularınız parametrenin free () 'ye döküm kodunu ortaya çıkarırsa, ya o zaman diliminden ya da o zamandan bir yaratık tarafından yazılmış olması gerektiğine inanıyorum. Bunun için herhangi bir kaynak bulamıyorum, bu yüzden cevap vermekten kaçınırım.