C ++:使用placement参数删除

时间:2016-09-05 12:00:16

标签: c++

我知道无法通过调用“delete”运算符来调用带有放置参数的delete运算符。

例如,下面的示例无法编译:

class C {
public:
  ...
  void *operator new(unsigned int s, MyAllocator& a) { return a.allocate(s); }
 void operator delete(void *p, MyAllocator& a) { a.free(p); }
};

...

MyAllocator a;
C *p = new(a) C;
...
delete (a) p;    // compilation error

我也知道要实现的好方法是:

p->~C();
a.free(p);

但我的问题不是语法或用C ++编写代码的方法,而是关于阻止在删除操作符调用中使用放置参数的原因(虽然允许使用新的)。

0 个答案:

没有答案