почему доступ к адресу переменной изменяет адрес другой переменной?

Код 1:

int main(){
int a=1;
int b=2;
cout << "&a: "<<&a << endl;
}

Выход 1:

&a: 0x22ff48

Код 2:

int main(){
int a=1;
int b=2;
cout << "&a: "<<&a << endl;
cout << "&b: "<<&b << endl;
}

Выход 2:

&a: 0x22ff4c
&b: 0x22ff48

Так что мой вопрос, почему адрес варибале a изменилось, когда я распечатал адрес варибале b ?

1

Решение

Когда ты не использовал b В общем, компилятор, вероятно, удалил его полностью, поэтому он не занимал места.

Когда вы взяли адрес b, что заставило компилятор выделить для него место.

7

Другие решения

В любом случае, ОС может загрузить исполняемый образ по другому (виртуальному) базовому адресу в следующий раз.

То, что вы наблюдаете не определено во всяком случае. Дело в том, четное если никакие переменные не оптимизированы, и программа не перекомпилируется, она может каждый раз давать разные результаты.

Это может будет определена реализация, если вы считаете ОС как часть реализация

5

По вопросам рекламы [email protected]