指针回收分为两个部分,第一部分是释放值。
第二步是把地址赋空,也就是pointer = nullptr;
void delp(int *a)
{
delete a;
a = nullptr;
}
int *a = new int(10);
delp(a);
Delete之前
Delete后:
如果指针不指向空地址,那么地址还是指向原来的地址。从某种意义上说,无关大碍。但是如果你代码里的判断是
if(p)
{
// do sth.
}
那么p会继续往下执行,如果操作里有和p相关的操作,程序大概率直接崩溃了。