-1

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

例如:

Node* newNode = new Node();

delete newNode;
newNode = 0;    // why?

为什么删除的指针指向 0 或其他东西很重要?

4

3 回答 3

5

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

于 2013-08-07T04:18:23.443 回答
0

您应该将指针指向它以NULL使其在删除后无效,以便如果您尝试意外访问它,则会收到错误消息。

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

于 2013-08-07T04:17:44.330 回答
0

因此,如果您在代码中尝试再次删除它,您将不会收到错误消息。

只是一个标记,你已经做到了!

于 2013-08-07T04:18:19.363 回答