我正在运行一个小程序来娱乐,并遇到了一个令我困惑的问题。
#include <iostream>
#include <string>
using namespace std;
struct T
{
int val;
};
int main()
{
for(int i = 0; i < 2; ++i)
{
T *p = new T;
cout << p << endl;
delete p;
}
T *q = new T;
cout << q << endl;
delete q;
return 0;
}
输出:
0x16b76d0
0x16b76d0
0x16b76d0
它们都在同一个内存位置吗?
最佳答案
打印地址后您将删除内存。然后内存管理器可以自由选择相同的地址来分配新的内存。
关于C++ new 运算符分配新内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43433354/