我应该在删除后指定我的指针0吗?

0 c++ pointers compiler-warnings

可能重复:
删除指针后禁用指针是否合适?

我的教授告诉我们,在我们删除它指向的已分配空间后,将指针设置为0是一个好习惯,而且我一直试图养成这样做的习惯.但是当我这样做时,我的编译器会发出警告:

警告W8004 LinkedList.h 102:为'nPtr'分配一个从未在函数LinkedList :: remove(int)中使用的值

我知道警告不是世界末日,我的程序仍然可以编译,但我的OCD不会放过它.所以我问你更多知识渊博的程序员:

删除它的节点后将指针设置为0是否常见,这是一个很好的做法吗?如果我继续让我的程序编译时出现这样的警告,这有关系吗?感谢所有答案!

Kar*_*tel 9

是很常见.恕我直言,这不是好习惯.

好的做法是以你已经知道删除后不能使用指针的方式安排你的删除.最好的方法是使用RAII,即在析构函数中完成工作.一旦析构函数到达结尾,对象就不再存在,因此指针(作为数据成员)不再存在,因此它不会悬空.

  • @ blakejc70:资源获取是初始化.基本上,我们的想法是将资源封装在对象中,以便在调用对象的析构函数时将其销毁.通过这种方式,您可以在本地范围内声明对象,而无需担心在完成后清理资源.(它们在范围结束时被清理.)这是某些智能指针的基础,如`auto_ptr`和`scoped_ptr`. (3认同)