Это может показаться очень простым вопросом, но он связан с тем, как работает компилятор.
Какова последовательность выделения памяти локальным переменным функции.
Предположим, у меня есть функция
int a,b;
int c1;
int c,d;
int c2;
cout<<&a<<endl;
cout<<&b<<endl;
cout<<&c<<endl;
cout<<&d<<endl;
cout<<&c1<<endl;
cout<<&c2<<endl;
int f;
cout<<&f<<endl;
Здесь f получает наименьший адрес памяти (относительно других переменных), как если бы стек инициализации был построен следующим образом:
a b c1 c d c2 f
и затем память была выделена
Это может произойти, потому что существуют различные фазы компиляции, и это одна из них.
Какой фазе соответствует построение этого стека и в какой фазе фактически выделяется память?