プレースメントnewを使用して作成された変数でdeleteを呼び出して、そのメモリブロックにアクセスすると、定義されていない動作が発生することは承知しています。プレースメントの削除新しい
int* x = new int[2];
char* ch = new(x) char();
*ch = 't';
delete ch;
しかし、その代わりに、ヒープのメモリのブロックは、スタック上に割り当てられているし、我々はその変数に削除してからメモリにアクセス呼び出す場合、私はブロックタイプが無効であることの例外を取得します。
int x[2];
char* ch = new(x) char();
*ch = 't';
delete ch;
だから質問のリストは以下のとおりです。
- がスタックに削除を呼び出すことにより、例外ですか?
- スタック上のメモリブロックに新しい配置を使用しても問題ありませんか?
- はいの場合、文字ポインタを削除するにはどうすればよいですか?
- メモリの1つのブロックに複数の変数を割り当てることは可能ですか?
http://www.parashift.com/c++-faq/placement-new.html – Drax