私は学生で、C++ についての知識はほとんどありませんが、それを拡張しようとしています。これは哲学的な質問です..私は何かを実装しようとしているわけではありません。
以来
#include <new>
//...
T * t = new (std::nothrow) T();
if(t)
{
//...
}
//...
例外を非表示にします。単純な割り当てに比べて例外の処理が重いため、単純な割り当てが成功したかどうかを確認するために を使用する必要があることを考えるとif(t)
、なぜ通常のnew T()
方法があまり良い習慣と見なされないのでしょうtry-catch()
か (そうでない場合は、プログラムが死ぬのを見るだけです)??
new
を使用する場合と比較して、通常の割り当ての利点は何nothrow new
ですか? その場合の例外のオーバーヘッドは重要ではありませんか?
また、割り当てが失敗したとします (たとえば、システムにメモリが存在しません)。その状況でプログラムができることはありますか、それとも正常に失敗するだけですか。すべてが予約されている場合、ヒープ上の空きメモリを見つける方法はありませんか?
割り当てが失敗し、 anstd::bad_alloc
がn の場合、オブジェクト (たとえば a ) を割り当てるのに十分なメモリがないため、例外を格納するのに十分なメモリがあるthrow
とどのように仮定できますか??new int
御時間ありがとうございます。質問がルールに沿っていることを願っています。