c++ - `delete <pointer>` 是只销毁指针,还是销毁指针对象?

标签 c++ pointers memory-management

在 C++ 中,我们总是必须在新建指针之后delete它。

但我试图了解这是否只是删除了指针,或者还调用了指向对象的析构函数。

例如:

Thing* pointer = new Thing;
// .. some code
delete pointer;

这是否调用了pointer指向的对象的析构函数?还是只销毁指针?

最佳答案

Does this call the destructor of the object referenced by pointer?

是的,它通过调用其析构函数来销毁对象。它还会释放 new 分配给存储对象的内存。

Or does it only destory the pointer?

它对指针没有任何作用。它仍然存在,但不再指向有效对象,因此在您为其分配有效指针值之前无法使用。

关于c++ - `delete <pointer>` 是只销毁指针,还是销毁指针对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26247287/

相关文章:

linux - 如何在Linux上的matlab中检查最大的连续空闲 block ?

c++ - 两个基类中的相同成员?

C++ MIDI文件读取库

c++ - 从 c/c++ 应用程序写入 *.doc 或 *.rtf 文件

C++ 将指针传递给函数 (Howto) + C++ 指针操作

c - 具有指针、常量和字符串格式的 Sprintf

c - malloc 是否需要操作系统支持?

c++ - C++ SDL 和 (Python PyGame) 是否被业余爱好者以外的人使用?

c++ - 直接给float变量赋值十六进制整数和通过指针转换赋值的区别

objective-c - 静态分析器 - 内存泄漏