【发布时间】:2015-05-22 07:22:07
【问题描述】:
假设我有这个代码:
Obj* objects[10];
char* buffers[10];
// ...
buffers[1] = new char[sizeof(Obj)];
objects[1] = new(&buffers[1]) Obj();
// ...
objects[1]->~Obj();
delete[] buffers[1];
在调用delete之后再使用buffers[1]可以吗?
我所说的重用是指再次使用那个地址空间作为分配的地址。
我的意思是使用这段代码
objects[2] = new(&buffers[1]) A();
【问题讨论】:
-
重用是指重新分配内存并使用它吗?
-
究竟以何种方式重用它?重用存储空间来存储另一个指针?当然。删除
buffers[1]中的地址后,它可以做什么?没有。 -
是的,就像再次将该空间用于另一个对象实例
-
@CarloBrew 什么空间?在代码中显示你想要做什么。
-
如果你之前不打电话给
delete[] buffers[1],你可以做objects[2] = new(&buffers[1]) A();。
标签: c++ memory placement-new