7.5 有时候malloc返回的值转换为分配的指针类型,为什么
问题:为什么有些代码小心地把malloc 返回的值转换为分配的指针类型。
在ANSI/ISO 标准C 引入void * 一般指针类型之前, 这种类型转换通常用于在不兼容指针类型赋值时消除警告(或许也可能导致转换)。
在ANSI/ISO 标准C 下, 这些转换不再需要, 而起事实上现代的实践也不鼓励这样做, 因为它们可能掩盖malloc() 声明错误时产生的重要警告; 参见上面的问题7.8。(但是, 因为这样那样的原因, 为求与C++ 兼容, C 程序中常常能见到这样的转换。在C++ 中从void * 的明确转换是必须的。)
在ANSI/ISO 标准C 引入void * 一般指针类型之前, 这种类型转换通常用于在不兼容指针类型赋值时消除警告(或许也可能导致转换)。
在ANSI/ISO 标准C 下, 这些转换不再需要, 而起事实上现代的实践也不鼓励这样做, 因为它们可能掩盖malloc() 声明错误时产生的重要警告; 参见上面的问题7.8。(但是, 因为这样那样的原因, 为求与C++ 兼容, C 程序中常常能见到这样的转换。在C++ 中从void * 的明确转换是必须的。)