bad_allocにいくつかの負の引数を渡して、例外をテストしようとしましたnew[]。小さな負の数を渡すと、期待どおりの結果が得られます- a bad_alloc。ただし、 を渡す-1と、オブジェクトが何千回も構築され (コンストラクターで静的カウンターを出力します)、アプリケーションが segfault で終了することがわかります。
new[]は符号付き整数をにsize_t変換します。-1size_t-2maximum - 1
new[]では、巨大な数を受け取ったときに例外をスローするのに、最大数を受け取ったときに割り当てようとするのはなぜsize_tですか? 1111...1と1111...0forはどう違いnew[]ますか?:)
前もって感謝します!