Мне известно, что вызов delete для переменной, созданной с использованием места размещения new, а затем доступа к этому блоку памяти имеет неопределенное поведение.Удалить при размещении new
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;
Так список вопросов:
- исключение связи с призывом удалить в стеке?
- Можно ли использовать новое размещение на блоке памяти в стеке?
- Если да, то как мне удалить указатель на символ.
- Можно ли назначить несколько переменных в одном блоке памяти с использованием места размещения new?
http://www.parashift.com/c++-faq/placement-new.html – Drax