Я читал о области видимости переменных в C ++ и столкнулся с интересной структурой блоков:
int main(int argc, char **argv) {
int local;
{ // New level of scope
int more_local;
}
return 0;
}
Я понимаю, что переменные выталкиваются из стека в конце каждого блока, обозначенного закрывающей фигурной скобкой }
.
Я также читал, что вызовы функций также помещают свои переменные в стек и завершаются в конце вызова, обозначенного закрывающей фигурной скобкой }
:
void foo() {
int more_local;
}
int main(int argc, char **argv) {
int local;
foo();
return 0;
}
КакСтек обрабатывается по-разному в обеих ситуациях, и каковы преимущества и недостатки обоих?