В показанном вами коде N
- это локальная переменная, которая создается и уничтожается при каждом входе и выходе из блока.Не удивительно, что он всегда имеет один и тот же адрес.Ваш код ничем не отличается от этого:
for (int i = 0; i < 10; ++i)
{
int j = i;
cout << "Value: " << j << " Location: " << &j << endl;
}
Каждая итерация цикла создает новый экземпляр j
в начале и уничтожает этот новый экземпляр в конце.Даже если у каждого j
есть свое значение, все они могут жить по одному и тому же адресу, поскольку имеют непересекающиеся времена жизни.Вы можете видеть, какое значение вы храните в j
, не имеет значения.Таким образом, это, вероятно, также покажет разные значения, но в одном и том же месте.
Использование new
не имеет значения, поскольку вы не сохраняете значение, которое оно вам дает.Вы разыменовываете это и выбрасываете.