2009-11-15 55 views
3

我想知道是否可以安全地做到这一点后,立即指针...分配给删除

delete p_pointer; 
p_pointer = p_otherPointer; 

不是...

delete p_pointer; 
p_pointer = 0; 
p_pointer = p_otherPointer; 

我会假设这样,因为有没有删除和分配之间的任何新的内存分配,但我只是想确保。

回答

16

是的,它是安全的。如果您要重新指定它,将删除的指针设置为NULL是无用的。人们将删除指针设置为NULL的原因是,它们可以将其标记为已删除,以便以后可以检查它是否已被删除。

+1

而且,因为如果他们不小心调用'反对,它应该delete'很好地表现一个空指针。 – 2009-11-15 13:58:44

6

是的。 delete是一个运营商。您将它传递给一个指针,并删除该指针指向的对象。它对指针本身没有任何作用。

这一点后,就可以不再提领与的指针该指针了,但你可以继续在适当的类型的不同对象指向它使用指针变量本身,例如。

1

其实auto_ptr::reset正是这么做的(至少在实现我见过)