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 시켜준다.