删除指针后立即分配给指针

6
我在想是否安全这样做...
delete p_pointer;
p_pointer = p_otherPointer;

Rather than...

delete p_pointer;
p_pointer = 0;
p_pointer = p_otherPointer;

我认为是这样的,因为在删除和赋值之间没有新的内存分配,但我只是想确认一下。
3个回答

20

是的,它是安全的。如果您即将重新分配已删除的指针,则将其设置为NULL是无用的。人们将已删除的指针设置为NULL的原因是为了将其“标记”为已删除,以便稍后可以检查是否已删除。


1
因为如果他们意外调用delete,它应该在空指针上表现得很好。 - Matthieu M.

6
是的,delete 是一个操作符。您向它传递一个指针,它会删除该指针指向的对象。它不会对指针本身进行任何操作。
在此之后,您不能再使用指针的 值 进行解引用,但您可以继续使用指针变量本身,例如将其指向适当类型的其他对象。

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接