I was running a tiny program for fun and encountered a issue that puzzled me.

```
#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;
}

```

output:

```
0x16b76d0
0x16b76d0
0x16b76d0

```

They are all at same memory location?