我正在阅读麻省理工学院的《C++ 简介》,其中一个代码示例显示:
int *getPtrToFive() {
int *x = new int;
*x = 5;
return x;
}
int main() {
int *p;
for (int i = 0; i < 3; ++i) {
p = getPtrToFive();
cout << *p << endl;
delete p;
}
}
我想知道为什么可以在每次迭代后删除“p”,尽管“p”在循环开始之前被声明了一次并且没有使用“new”分配。
另一个问题是当“*x”在函数中被赋值为5时,因为它是一个指针,内存地址会被改变吗?所以它会像 0x00005 而不是实际值 5?