【问题标题】:Delete vs operator delete (and void pointer)删除与运算符删除(和空指针)
【发布时间】:2012-05-21 08:49:26
【问题描述】:

delete ptroperator 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));

?

【问题讨论】:

  • 是的,这是唯一的区别,除了你可以重载operator delete

标签: c++ destructor void-pointers delete-operator


【解决方案1】:

delete ptr 会为operator delete 做重载解析,所以它可能不会调用全局的::operator delete

但除此之外,是的。 delete 运算符调用相关的析构函数(如果有),然后调用 operator delete

【讨论】:

    猜你喜欢
    • 2012-01-13
    • 2013-05-24
    • 1970-01-01
    • 2015-08-09
    • 2016-10-20
    • 2011-12-21
    • 2014-09-06
    • 1970-01-01
    • 2016-11-02
    相关资源
    最近更新 更多