問題タブ [nothrow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std :: nothrowはいつ使用する必要がありますか?
の理想的な使用法はstd::nothrow
何ですか?
c++ - nothrow オプションを指定した演算子 new は引き続き例外をスローします
そのようなコードがあります:
ただし、このプログラムはまだ std::bac_alloc 例外をスローしますが、 new は std::nothrow パラメータで呼び出されます。このプログラムは Visual C++ 2010 でコンパイルされています。例外がスローされるのはなぜですか?
編集:
mingw の Windows で g++ を使用すると、すべて正常に動作します。
c++ - 標準ヘッダー ファイルでの std::nothrow と std::new_handler の使用は何ですか
小さな標準ヘッダー ファイルに出会いました<new>
。おそらくこれまでに直接使用したことはありません。興味のある方はg++版をどうぞ。
以下の部分は私の興味です:
- プログラマはどのよう
struct nothrow_t
にオブジェクトnothrow
を使用しますか? オブジェクトは本当に必要extern
ですか? - はいつ
new_handler
使用されますか? - すべてがblock
operator new/delete
で宣言されているのはなぜですか?extern C++
c++ - C++ : メモリ不足の場合は何を返すべきですか?
以下のようにコーディングすると、「null」が返され、例外は発生しませんでした。
new 演算子で「nothrow」引数を使用しないのはどうですか? 「null」も返しますか?もしそうなら、なぜ「nothrow」引数の使用が推奨されるのですか?
御時間ありがとうございます。
c++ - std :: stringのデフォルトのコンストラクターはスローされませんか?
std ::strings;ができます。どんな状況でも投げますか?これは規格によって規制されていますか(違いがある場合は、C ++ 03に関心があります)?
d - D で文字列を構築する好ましい方法
関数の属性@safe
、pure
およびnothrow
親関数のコンパイル時と実行時のパフォーマンスに関して、文字列を構築するための推奨される方法は何ですか?
たとえば、どちらを使用する必要がありますか
また
format
バージョンの方が見やすいと思いますが、他の点では優れていますか?
フォーマット文字列とその引数を CTFE する必要があるため、コンパイル時にわずかなパフォーマンス ヒットが発生する可能性があります。
c++ - (std::no throw) 割り当てが失敗するとクラッシュする
次のようなカスタムメモリアロケータを作成しました
標準では例外をスローしてはならないと言われているため、割り当てが成功したかどうかを確認しません。今、allocator オブジェクトをモックして、malloc 関数呼び出しが NULL を返すようにしています。私はこの演算子を次のように使用しています:
ここでクラッシュし、gdb の bt は次のように表示されます。このポインタは突然 0x0 になります。誰でも私を説明できますか..!この場合、コードでこの状況をどのように処理できますか。
c++ - プレースメントの新規および例外
「placement new」演算子は次のように宣言されます。
ただし、実際の割り当ては含まれないため、不適切な割り当て例外は排除されますが、ポインターが不適切な場所を指している可能性は依然としてあります。その場合、範囲またはオーバー/アンダーフロー エラーが発生することが予想されますが、発生しません。noexcept
代わりに単に実行を終了するように宣言されたという事実は?
また、これは、C++ 11 配置の前に new が直接クラッシュするstd::unexpected
のではなく、スローして処理しようとすることを意味しますか?std::set_unexpected
「念のため」配置の新しいオーバーロードをスローするべきではありませんか?