C++用placementnew申请空间时释放的时候要调用析构函数而不能用delete,因为不是分配在自由存储区上的,内存不是系统得到的
vector申请空间用的就是placementnew
class Object {
public:
Object() : m_value(new int(4)) {}
~Object() {delete m_value;}
private:
int m_data[100];
int * m_value;
};
char info[10000];
void placementNew() {
Object* s = new(info)Object();
// right?
//s->~Object();
// or
delete s;
std::vector<Object> a;
a.reserve(100);
a.push_back(Object());
a.pop_back();
}