【发布时间】:2015-10-17 13:27:40
【问题描述】:
class Foo{
//some member
public:
int bar;
}
int main(){
char* buffer = new char[100];
Foo* f = new(buffer)Foo();
//do i have to
delete f;
//or is
delete[] buffer;
//enough
}
如果Foo 的删除对系统有一些重大影响,我当然必须删除它,但可以说它是一个简单的存储对象,我将它完全放置在缓冲区内并且没有解构函数会删除一些其他的东西。
- 我是否必须删除一个放置在新内部的对象 缓冲区还是删除缓冲区就足够了?
- 如果我必须对缓冲区内的每个对象调用 delete,为什么要这样做 我必须这样做吗?
我读到:what-uses-are-there-for-placement-new 他也说
您不应该取消分配正在使用内存缓冲区的每个对象。相反,您应该只删除[] 原始缓冲区。
【问题讨论】:
标签: c++ memory memory-management new-operator placement