【发布时间】:2021-03-22 07:48:42
【问题描述】:
#include <iostream>
using namespace std;
int main() {
int *p1;
p1 = new int;
int *p2;
p2 = new int;
p2 = p1; // what happens here?
*p1=5;
cout << "pointer 2 is " << *p2 << endl << *p1 << endl; // both give out 5
delete p1; // what happens to p2 ?
cout << "pointer 2 is " << *p2 << endl;
delete p2;
return 0;
}
当我删除指针对象 p1 时会发生什么?现在指针 p2 引用的是什么?有人可以解释一下吗?感谢您的帮助
【问题讨论】:
-
您可能会发现this question 有助于理解什么是指针。这种情况在“内存泄漏”标题下进行了介绍。
-
要点:指针是一个变量,它恰好包含一个地址,可用于访问该地址处的对象。除此之外,它就像任何其他变量一样,因此
p2 = p1;将p2存储的地址替换为p1存储的地址。 -
@Brian:谢谢你的链接。这种解释是内存管理的一个很好的类比。很有帮助
标签: c++ dynamic-memory-allocation