首页 > 解决方案 > 删除 x 与 ::operator delete(x)

问题描述

delete x;和 和有什么不一样::operator delete(x);?我知道它们是不同的,但我无法弄清楚它们的区别是什么。我的具体用例是我有一个必须分配的对象,::operator new(size_t)然后用placement new 运算符进行初始化。但是,我真的希望能够使用delete x;而不是释放它::operator delete(x);,所以我想知道这两种方法(没有双关语)何时会做不同的事情,所以我可以知道何时(如果有的话)可以安全使用它们可以互换。

标签: c++

解决方案


delete x是一个delete expression

::operator delete(x)是一个deallocation function

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


推荐阅读