[英]Delete vs operator delete (and void pointer)
Does delete ptr
differ from operator delete(ptr)
only in this, that delete
calls ptr
destructor? delete ptr
是否与operator delete(ptr)
不同,那个delete
调用ptr
析构函数? Or in other words, does delete ptr
first call a destructor of ptr
and then operator delete(ptr)
to free allocated memory? 或者换句话说,不
delete ptr
首先调用析构函数ptr
,然后operator delete(ptr)
以释放分配的内存? Then is delete ptr
technically equivalent to the following: 然后
delete ptr
技术上等同于以下内容:
T * ptr = new T;
//delete ptr equivalent:
ptr->~T();
::operator delete(static_cast<void *>(ptr));
? ?
delete ptr
will do overload resolution for operator delete
, so it may not call the global ::operator delete
delete ptr
将为operator delete
执行重载解析,因此它可能不会调用global ::operator delete
But otherwise, yes. 但是,不然,是的。 The
delete
operator calls the relevant destructor, if any, and then calls operator delete
. delete
运算符调用相关的析构函数(如果有),然后调用operator delete
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.