首先,我要说的是,使用智能指针,你就不必再担心这个问题了。
以下代码有什么问题?
Foo * p = new Foo;
// (use p)
delete p;
p = NULL;
这是由另一个问题的 答案和评论 引发的。其中来自Neil Butterworth的一条评论获得了几个赞:
在 C++ 中,在 delete 后将指针设置为 NULL 不是普遍的良好实践。有时这样做是好的,有时是无意义的,有可能会隐藏错误。
在许多情况下这样做并没有帮助。但在我的经验中,它不会产生负面影响。请提醒我如果我理解错了。
delete
一个空指针是可以的,这也是将指针清零的好处之一。 - David Thornleytemplate<class T> inline void destroy(T*& p) { delete p; p = 0; }
”。 - Dennis