有人可以解释为什么这样做会导致错误以及它有什么问题吗?

时间:2016-11-21 04:31:33

标签: c++ pointers

我知道这个问题并不具有描述性,但我希望你们能够在结束时理解我的问题。

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

所以我想知道为什么当你删除p2时会导致错误和内存泄漏?

谢谢!

1 个答案:

答案 0 :(得分:0)

它会导致内存泄漏,因为当您将*p2指定为*p1并删除*p1时,您实际上是在删除*p2,但是您尝试删除指针那不再存在了。