Нужно ли нам явно вызывать деструктор для “ простые классы POD», выделенные с «новым размещением»?

Здесь под «простым» я подразумеваю класс с не виртуальным пустым деструктором или типом POD.

Типичный пример:

char buffer[SIZE];
T *p = new(buffer) T;
...
p->~T();  // <---- always ?

Что произойдет, если мы не вызовем явный деструктор для p? Я не думаю, что это неопределенное поведение или утечка памяти.
Есть ли проблема с повторным использованием буфера?

10
задан iammilind 11 May 2012 в 06:46
поделиться