Как размещение нового может быть сделано в стеке - PullRequest
3 голосов
/ 18 января 2012

Рассмотрим следующие коды:

char mem[sizeof(char)];
void* p = mem;
f = new(p) char;

Так как память для переменной mem должна находиться в стеке Итак, почему этот кусок памяти не будет собран автоматически в конце.

1 Ответ

9 голосов
/ 18 января 2012

Память собрана автоматически.

Но деструктор не будет вызываться автоматически. Когда вы используете размещение new, вы должны связать это с ручным вызовом деструктора. Для char это, конечно, не имеет значения, поскольку деструктор тривиален.

...