删除后立即分配指针

时间:2009-11-15 00:58:19

标签: c++ pointers

我想知道这样做是否安全......

delete p_pointer;
p_pointer = p_otherPointer;

而不是......

delete p_pointer;
p_pointer = 0;
p_pointer = p_otherPointer;

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

3 个答案:

答案 0 :(得分:17)

是的,这是安全的。如果您无论如何要重新分配它,将删除的指针设置为NULL是没用的。人们将删除指针设置为NULL的原因是他们可以将其“标记”为已删除,因此稍后他们可以检查它是否已被删除。

答案 1 :(得分:6)

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

在此之后,您不能再取消引用具有该指针所具有的的指针,但您可以继续使用指针变量本身,例如通过将其指向不同的对象适当的类型。

答案 2 :(得分:1)

实际上auto_ptr::reset正是这样做的(至少在我见过的实现中)