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

Avi*_*ohn 1 c++ pointers memory-management

在C++中,我们deletenew编辑它之后总是需要一个指针.

但我试图理解是否只是删除指针,或者也调用指向对象的析构函数.

例如:

Thing* pointer = new Thing;
// .. some code
delete pointer;
Run Code Online (Sandbox Code Playgroud)

这会调用指向的对象的析构函数pointer吗?或者它只会破坏指针?

Mik*_*our 5

这会调用引用的对象的析构函数pointer吗?

是的,它通过调用它的析构函数来破坏对象.它还释放new分配用于存储对象的内存.

或者它只会破坏指针?

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