4
まあ、私はこれが純粋な悪の音だと知っています。私はthis SO postを読んでいて、スタックオブジェクトを再構築する技術に遭遇しました。スタックオブジェクトを再構築する
{
T obj(...); // dtor will be called at end of scope
obj.~T(); // YOLO
new (&obj) T(...);
// obj goes out of scope. The compiler inserts `obj.~T();` here.
}
...私たちが好きなだけ同じメモリチャンクを再利用できるように、基本アイデアは次のとおりです。このコードは標準で合法ですか?このような狂気は未定義の行動ですか?
新しいプレースメントのコンストラクタが例外をスローするとどうなりますか?デストラクタが2度呼び出すオブジェクトがありますか? – MRB
標準ライブラリでは、この「テクニック」が全面的に使用されていますが、@ MMRBのような例外保証のようないくつかの処理が行われます。事が間違っている可能性がありますこれをしないでください。 – DeiDei