为什么建议在删除指针后将其设置为null?

Sam*_*D20 1 c++ pointers

int* ptr = new int();
delete ptr; 
ptr = 0; // or null
Run Code Online (Sandbox Code Playgroud)

我的书告诉我,在删除指向的指针后,最好将指针设置为null或0.我不明白为什么.有人会给我一个可能导致问题的情景吗?

Ran*_*aul 5

只是为了让你知道指针不再指向任何东西,并且如果条件和其他布尔检查将失败:

   delete ptr;
   ptr = NULL;
   if(ptr)
     *ptr = 2;
Run Code Online (Sandbox Code Playgroud)

这段代码运行完全正常,但如果指针未设置为NULL,则会导致内存损坏.


Joe*_*oel 5

这样,如果您ptr在程序中稍后意外地再次使用它,它会立即导致崩溃,而不是在程序后期导致难以发现的错误.