【发布时间】:2010-06-17 17:57:54
【问题描述】:
如果我有一个指针,比如char* foo,有没有办法确定foo 是否指向内存中的有效位置? (所以,foo 不是 NULL,并且尚未调用 delete。)
【问题讨论】:
-
您可以在拨打
delete时将其设置为NULL。 -
最好是首先摆脱指针。把它放在一个可以在其整个生命周期内使用的智能指针中,那么这个问题就是微不足道的“是”。如果你不能这样做,那么就摆脱可能有一个无效指针的机会。
delete时不要设置为NULL,去掉指针! -
将指针设置为
NULL(或任何其他“摆脱它”的方法)不会处理指针可能具有的任何别名;唯一正确的答案是“不”。 -
@Tyler:GMan 建议使用智能指针,它具有重载的复制和赋值构造函数,因此别名不是问题。在这种情况下,“摆脱它”意味着让它超出范围并正确解决问题。
标签: c++ validation memory-management pointers