delete ptr
与 operator delete(ptr)
的区别仅在于 delete
调用 ptr
析构函数?或者换句话说,delete ptr
是否首先调用 ptr
的析构函数,然后调用 operator delete(ptr)
来释放分配的内存?那么 delete ptr
在技术上等同于以下内容:
T * ptr = new T;
//delete ptr equivalent:
ptr->~T();
::operator delete(static_cast<void *>(ptr));
?
最佳答案
delete ptr
会对operator delete
做重载解析,所以它可能不会调用全局::operator delete
但除此之外,是的。 delete
运算符调用相关的析构函数(如果有),然后调用 operator delete
。
关于c++ - 删除与运算符删除(和空指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10573678/