<分区>
int* ptr = new int();
delete ptr;
ptr = 0; // or null
我的书告诉我,在删除指向的内容后将指针设置为 null 或 0 是一种很好的做法。我不明白为什么。有人可以给我一个这可能会导致问题的场景吗?
<分区>
int* ptr = new int();
delete ptr;
ptr = 0; // or null
我的书告诉我,在删除指向的内容后将指针设置为 null 或 0 是一种很好的做法。我不明白为什么。有人可以给我一个这可能会导致问题的场景吗?
最佳答案
只是为了让您知道指针不再指向任何东西,并且如果条件和其他 bool 检查将失败:
delete ptr;
ptr = NULL;
if(ptr)
*ptr = 2;
此代码将运行得很好,但如果指针未设置为 NULL 会导致内存损坏。
关于c++ - 为什么建议在删除后将指针设置为null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16573257/