删除与运算符删除(和无效指针)
Delete vs operator delete (and void pointer)
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++) 中的元素
- 如果我删除指针,我的C++程序会意外删除系统文件吗?
- 为什么const_cast删除指针的恒常性,而不删除指向常量的指针的恒常性?
- 删除指针后内存泄漏
- 这是系统资源吗?(或者我怎么知道我是否需要删除指针) - 在 C++ 中使用 C
- C++ 从 2 组指针中删除指针
- 当删除 [] 指针工作时,为什么无法获得指向的数组大小?
- 在这种情况下,删除指针数组期间会发生什么?
- 在C++中删除指针数组时析构函数崩溃
- 何时/如何在使用指针后正确删除指针?
- 在C++库中,谁应该删除指针、用户或库?
- 删除指针后阻止对象使用 "this"
- 删除指针后C++尝试/捕获
- 删除指针内存分配以避免内存泄漏
- 删除指针时,未分配被释放的 C++ 指针错误
- 如何从抽象类中删除指针
- 我应该在 v8::外部手动删除指针吗?
- 删除指针
- C 如何删除指针的默认对象成员