***删除后为什么将指针指向0?

时间:2013-08-07 04:14:50

标签: c++ pointers null

我很困惑为什么有些人在删除之后将指针(在前面的堆上创建)指向0

例如:

Node* newNode = new Node();

delete newNode;
newNode = 0;    // why?

如果删除的指针指向0或其他内容,为什么重要?

3 个答案:

答案 0 :(得分:5)

这样做是为了在你删除它后意外尝试使用它时会立即收到错误。使用指向已删除内存的指针有时可能“工作”,但稍后会崩溃。通过将其设置为NULL,您可以确保它始终是一个使用不好的指针。

答案 1 :(得分:0)

您应该将指针指向NULL以使其在删除后无效,这样如果您尝试意外访问它,则会出错。

注意:早期版本的编译器使用NULL(实际上是#DEFINE NULL 0)使指针无效。 C ++ 11现在有nullptr使其无效(与NULL不同)

答案 2 :(得分:0)

因此,如果您尝试再次删除代码,则不会出现错误。

只是你做过的一个标记!