Рассмотрим следующие коды:
char mem[sizeof(char)]; void* p = mem; f = new(p) char;
Так как память для переменной mem должна находиться в стеке Итак, почему этот кусок памяти не будет собран автоматически в конце.
Память собрана автоматически.
Но деструктор не будет вызываться автоматически. Когда вы используете размещение new, вы должны связать это с ручным вызовом деструктора. Для char это, конечно, не имеет значения, поскольку деструктор тривиален.
new
char