mallocの戻り値

mallocの戻り値の型はvoid*なのだけれどこれをキャストする人がいる。Cの入門的なサイトはWeb上にたくさんある。戻り値がvoid*なので格納するポインタの型にあわせてキャストしろっていうような解説が非常に多い。


C++ではキャストが必要だが、そもそもC++ではnewを使うべきじゃないの?それならコンパイルはソース単位だから関係なくてリンクだけの問題だよね。ソースにC/C++を混ぜるような変態チックなのはついて行けない。


ANSI-C以前のコンパイラではmallocの戻り値がchar*だったのでキャストが必要でした、とか言う解説も見たけど何でmallocだけ?関数のプロトタイプ宣言はANSI-Cスタイルなのに、、、。


キャストすることにメリットやキャストしないデメリットが思いつかない。