我當時正在運行一個小程序以獲得樂趣,並遇到一個讓我感到困惑的問題。C++新操作符分配新內存
#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
他們都在同一個內存位置?
是的,在這種情況下,它們都是相同的位置*。你的程序正在做的是爲同一個對象重用相同的內存(爲什麼不是這樣;在每次delete後它不再被使用,並且如果內存管理器認爲它適合,可用於另一個分配,並且在這種情況下) 。 – WhozCraig