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)