2016-11-21 60 views
-4

我知道這個問題不是描述性的,但我希望你們在本文結束時能夠理解我的問題。有人可以解釋爲什麼這樣做會導致一個錯誤,它有什麼問題?

int *p1, *p2; 
p1 = new int; 
p2 = new int; 
*p1=11; 
*p2=0; 
p2=p1; 
cout << *p1 << " " << *p2 << endl; 
delete p1; 
delete p2; 

所以我想知道爲什麼當你刪除p2它會導致錯誤和內存泄漏?

謝謝!

+2

'p2 = p1;'您丟失了p2的原始值並導致內存泄漏。錯誤是因爲你試圖釋放相同的地址兩次。 –

回答

0

它給你一個內存泄漏,因爲當你指定*p2*p1和刪除*p1,你基本上刪除*p2,但你嘗試刪除不存在了一個指針。

相關問題