哪个运营商删除?

The*_* do 14 c++ operators

是否有区别:

operator delete(some_pointer);
Run Code Online (Sandbox Code Playgroud)

delete some_pointer;
Run Code Online (Sandbox Code Playgroud)

如果是这样,有什么区别,哪一个应该使用一个以及该运营商的另一个版本?谢谢.

Dim*_*ima 22

具有讽刺意味的是,delete运营商operator delete()并不是一回事.

delete some_pointer;调用指向的对象的析构函数some_pointer,然后调用operator delete()释放内存.

您通常不operator delete()直接调用,因为如果这样做,将不会调用对象的析构函数,并且您可能最终会出现内存泄漏.

你唯一需要关心的operator delete()是你想要通过覆盖operator new()和进行自己的内存管理operator delete().

最糟糕的是,你也应该知道,delete并且delete []是两个不同的东西.

  • 这正是我想要的.谢谢. (2认同)

Oli*_*rth 6

operator delete()简单地释放记忆. delete some_pointer调用some_pointer析构函数,然后调用operator delete().