我想知道这样做是否安全......
delete p_pointer;
p_pointer = p_otherPointer;
而不是......
delete p_pointer;
p_pointer = 0;
p_pointer = p_otherPointer;
我会假设,因为删除和分配之间没有任何新的内存分配,但我只是想确定。
答案 0 :(得分:17)
是的,这是安全的。如果您无论如何要重新分配它,将删除的指针设置为NULL是没用的。人们将删除指针设置为NULL的原因是他们可以将其“标记”为已删除,因此稍后他们可以检查它是否已被删除。
答案 1 :(得分:6)
是。 delete
是运营商。你传给它一个指针,它删除该指针指向的对象。它对指针本身没有任何作用。
在此之后,您不能再取消引用具有该指针所具有的值的指针,但您可以继续使用指针变量本身,例如通过将其指向不同的对象适当的类型。
答案 2 :(得分:1)
实际上auto_ptr::reset
正是这样做的(至少在我见过的实现中)