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;
}
スタックは両方の状況でどのように異なる方法で処理され、両方の長所と短所は何ですか?