質問: 最近のプログラムを見ているとメモリの確保をほぼすべてnew演算子でやっているように思えます。 そこで自分なりにmallocとnewの違いについて調べてみました。 大きいところではmallocではコンストラクタ、デストラクタが呼ばれない mallocはメモリを動的に増やしたり減らしたりできる 正直mallocがここまで使われない致命的なものは見つかりませんでした。 newはC++で統一性をもたるためにつかわれているのでしょうか? またmallocは実際どういった場面で使うのがベストなのでしょうか? 以上2点について詳しい方おりましたら教えていただけると幸いです。 よろしくおねがいします!
回答: すくなくともC++では * newはコンストラクト込みのmalloc * deleteはデストラクト込みのfree とみなすことができ、つまり上位互換なので malloc/freeを積極的に使用する意義を見出せません。 ※ Cとのインタフェースをとるため、といった目的でないかぎり なので 「またmallocは実際どういった場面で使うのがベストなのでしょうか?」 については (Cとのインタフェースをとるため、といった目的でないかぎり)使う場面は**無い**と考えます。 さらに言えば、C++では new/delete すら使うなって方向に進んでます。 vector/stringあるいは make_unique/make_shared 等により、new/deleteより安全な代替がありますから。