我很困惑为什么有些人在删除之后将指针(在前面的堆上创建)指向0 。
例如:
Node* newNode = new Node();
delete newNode;
newNode = 0; // why?
如果删除的指针指向0或其他内容,为什么重要?
答案 0 :(得分:5)
这样做是为了在你删除它后意外尝试使用它时会立即收到错误。使用指向已删除内存的指针有时可能“工作”,但稍后会崩溃。通过将其设置为NULL,您可以确保它始终是一个使用不好的指针。
答案 1 :(得分:0)
您应该将指针指向NULL
以使其在删除后无效,这样如果您尝试意外访问它,则会出错。
注意:早期版本的编译器使用NULL
(实际上是#DEFINE NULL 0)使指针无效。 C ++ 11现在有nullptr
使其无效(与NULL
不同)
答案 2 :(得分:0)
因此,如果您尝试再次删除代码,则不会出现错误。
只是你做过的一个标记!