删除x vs :: operator delete(x)

时间:2018-09-24 01:25:42

标签: c++

delete x;::operator delete(x);有什么区别?我了解它们是不同的,但我无法弄清楚它们之间的区别是什么。我的特定用例是我有一个必须分配给::operator new(size_t)的对象,然后再使用placement new运算符对其进行初始化。但是,我真的很希望能够使用delete x;而不是::operator delete(x);来对其进行分配,因此我想知道这两种方法(无双关语)何时可能会做不同的事情,所以我可以说何时(如果有)可以安全地互换使用。

2 个答案:

答案 0 :(得分:4)

delete xdelete expression

::operator delete(x)deallocation function

delete表达式将调用析构函数(如果存在),然后调用释放函数。直接调用释放函数将绕过析构函数。

答案 1 :(得分:2)

唯一的区别是::operator delete()不会像delete那样调用析构函数。