如何在堆栈上进行新的放置

How placement new can be done on stack

本文关键字:堆栈      更新时间:2023-10-16

考虑以下代码:

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

由于变量mem的内存应该在堆栈上那么,为什么这段内存最后不自动收集呢。

内存是自动收集的。

但是析构函数不会被自动调用。当使用放置new时,应该将其与手动析构函数调用配对。对于char来说,这当然并不重要,因为析构函数是微不足道的。