可能重複:
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