删除与运算符删除(和无效指针)

Delete vs operator delete (and void pointer)

本文关键字:删除 指针 无效 运算符      更新时间:2023-10-16

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

delete ptr会对operator delete进行重载解析,所以它可能不会调用全局::operator delete

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