void foo()
{
int a;
int b;
}
void bar()
{
Cat cat;
Dog dog;
}
int main()
{
int a;
double b;
foo();
bar();
}
stack은 stack frame 단위로 쌓아간다. function 단위!
stack은 변수 단위로 쌓이지 않는다.
다음의 점선 칸 하나씩 stack이 쌓이는 것이다.
a or b // compiler가 무엇을 먼저 쌓을지 결정한다.
a or b // compiler가 무엇을 먼저 쌓을지 결정한다.
다음으로
foo() // 함수 쌓음
작업이 끝나면 foo를 pop 시킨다.
다음으로
bar() // foo 끝난 뒤 pop 시키고 bar 쌓음
작업이 끝나면 bar를 pop 시켜준다.