8.9 为什么有些代码小心地把 malloc 返回的值转换为分配的指针类型。

在 ANSI/ISO 标准 C 引入 void * 一般指针类型之前, 这种类型转换通常用于在 不兼容指针类型赋值时消除警告 (或许也可能导致转换)。

在 ANSI/ISO 标准 C 下, 这些转换不再需要, 而起事实上现代的实践也不鼓励 这样做, 因为它们可能掩盖 malloc() 声明错误时产生的重要警告; 参见上面的 问题 7.8。 (但是, 因为这样那样的原因, 为求与 C++ 兼容, C 程序中 常常能见到这样的转换。 在 C++ 中从 void * 的明确转换是必须的。)

参考资料: [H&S, Sec. 16.1 pp. 386-7]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)