2016-11-21 7 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の元の値が失われ、メモリリークが発生しました。エラーは、同じアドレスを2回解放しようとしたためです。 –

答えて

0

あなたは*p1として*p2を割り当て、*p1を削除すると、あなたは本質的*p2を削除しているので、それはあなたのメモリリークを与えるが、あなたはもう存在しないポインタを削除しようとします。

関連する問題