11
C ++で新しいキーワードを使用する必要があるのはいつですか?
しばらくC ++を使用していて、新しいキーワードについて疑問に思っていました。単に、私はそれを使うべきか、そうでないのか? 1)新しいキーワードで... MyClass* myClass = new MyClass(); myClass->MyField = "Hello world!"; 2)新しいキーワードなし... MyClass myClass; myClass.MyField = "Hello world!"; 実装の観点からは、それらはそれほど異なっていないように見えます(しかし、確かに違います)...しかし、私の主要言語はC#であり、もちろん最初の方法は私が慣れているものです。 問題は、方法1がstd C ++クラスで使用するのが難しいことです。 どの方法を使用する必要がありますか? 更新1: 私は最近、スコープから外れる(つまり、関数から返される)大きな配列のヒープメモリ(またはfree store)に新しいキーワードを使用しました。以前はスタックを使用していたため、要素の半分がスコープ外で破損していましたが、ヒープの使用に切り替えることで、要素が正常に機能するようになりました。わーい! アップデート2: 私の友人は最近、newキーワードを使用するための簡単なルールがあると私に言った。タイプするたびにnew、タイプしてくださいdelete。 Foobar *foobar = new Foobar(); delete foobar; // TODO: Move this to the right place. これは、常に削除をどこかに置く必要があるため(つまり、切り取りしてデストラクタなどに貼り付ける場合)、メモリリークを防ぐのに役立ちます。