2016-11-21 40 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,但你尝试删除不存在了一个指针。

相关问题