可能重复:
how to safely delete multiple pointers如何删除超过1个指针指向同一个地址
如下面的代码:
#include <iostream>
using namespace std;
int main(int argc, _TCHAR* argv[])
{
int *p, *q;
q = new int;
p = q;
delete q;
q = NULL;
cout << p << " " <<q << endl;
return 0;
}
p
点q
。当我删除q
和q
= NULL
时,p
仍然指向旧地址。 有没有人有办法让p
自动指向q
NULL
? 因为如果在程序中有很多指向相同地址的指针,我们不能让它们指向NULL
它会带来问题。
好吧,指向变量的指针只是指向变量的两个指针,所以你必须手动完成。或者尝试将它作为一个数组,在那里你有p [2],然后有两个单独的poiinters,然后通过遍历数组来删除它们。 – Annabelle
因此,与std :: shared_ptr不同,最后一个引用最终释放货物,所以您希望对象(和本例中的int)知道对它的所有引用,并清除它们* all * *其中任何*都是free'd ? – WhozCraig
不能把'p'作为参考吗? http://ideone.com/ahFmH – chris