我正在使用旧的代码库,几乎所有对free()的调用都在其参数上使用了强制类型转换。例如,
free((float *)velocity);
free((float *)acceleration);
free((char *)label);
其中每个指针具有对应的(和匹配的)类型。我认为这样做根本没有意义。这是很旧的代码,所以我想知道这是否是K&R的东西。如果是这样,我实际上希望支持可能需要这样做的旧编译器,因此我不想删除它们。
使用这些演员表是否有技术原因?我什至看不出有很多实用的理由来使用它们。在释放数据之前提醒自己数据类型有什么意义?
编辑:这个问题不是另一个问题的重复。另一个问题是该问题的特例,如果亲密的选民会阅读所有答案,我认为这是显而易见的。
Colophon:我给“常量答案”打了勾号,因为这是可能需要这样做的真实理由。但是,关于它是ANSI C之前的自定义(至少在某些程序员中)的答案似乎是在我的情况下使用它的原因。许多人在这里有很多优点。感谢你的贡献。
void*
预标准C,但只char*
。因此,如果您的考古发现揭示了将参数强制转换为free()的代码,那么我相信它必须是从那个时间段开始的,或者是那个时候的生物所写的。不过,我找不到任何来源,因此请不要回答。