假设一个指针对象被分配在一个点上,并且它被返回给不同的嵌套函数。有一次,我想在检查它是否有效或已被某人取消分配后取消分配该指针。
是否有任何保证这些都会起作用?
if(ptr != NULL)
delete ptr;
或者
if(ptr)
delete ptr;
此代码不起作用。它总是给出分段错误
#include <iostream>
class A
{
public:
int x;
A(int a){ x=a;}
~A()
{
if(this || this != NULL)
delete this;
}
};
int main()
{
A *a = new A(3);
delete a;
a=NULL;
}
编辑
每当我们谈论指针时,人们就会开始问,为什么不使用智能指针。仅仅因为有智能指针,每个人都无法使用它。
我们可能正在研究使用旧式指针的系统。美好的一天,我们无法将它们全部转换为智能指针。