私はoperator newを使用したプレースメント削除の結果に対してdeleteを呼び出していますか?
struct MyStruct { ~MyStruct() { } };
void *buffer = operator new(1024);
MyStruct *p = new(buffer) MyStruct();
// ...
delete p; // <---------- is this okay?
を行う場合は、~MyStruct()
と同様にoperator delete
を呼び出す両方の世話をすることが保証delete
のですか?
オブジェクトの割り当て方法と構築方法の違いは、1つのステップで処理するのと違うのですか?はいの場合、削除はおそらく失敗します。いいえの場合、削除はおそらく成功します。ですから、この標準がどのように 'delete'ではなく' new'の操作を指定するのかという疑問が生じます。 – nobar
これをgcc + Valgrindでテストしました。エラーは報告されていませんでした。 – nobar