`delete <pointer>`是仅销毁指针,还是销毁指针?</pointer>

时间:2014-10-08 00:14:19

标签: c++ pointers memory-management

在C ++中,我们delete之后总是需要new指针。

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

例如:

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

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

1 个答案:

答案 0 :(得分:5)

  

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

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

  

或者它只会破坏指针吗?

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