C++ リファレンスによると、次の方法でオブジェクトを新規作成できます。
MyClass * p1 = new MyClass;
またはによって
MyClass * p2 = new (std::nothrow) MyClass;
2 つ目は、例外をスローする代わりに null ポインターを返します。
ただし、私の経験上、このバージョンはほとんど見当たりません。
たとえば、Google はコードで例外を使用することをお勧めしませんが、私が見ることができるように、Chromium でも nothrow バージョンを使用していません。
非スローのものよりもデフォルトのものを好む理由はありますか? 例外を使用していないプロジェクトでも?
- 編集 -
フォローアップの質問: の戻り値を確認する必要がありmalloc()
ますか?
それどころか、多くの人が malloc の戻り値をチェックするようにアドバイスしているようです。
多くの割り当てエラーは、メモリ不足とは関係ありません。断片化によって割り当てが失敗する可能性があります。これは、空きメモリが十分にあるにもかかわらず、使用可能な連続した領域が十分にないためです。
これは本当ですか?この場合、なぜmalloc()
と をnew()
異なる方法で扱うのでしょうか?