코드 5-7에서 주목해야 할 부분은 마지막에 있는 함수 정의와 main() 함수에서 test() 함수를 호출하는 부분입니다. test() 함수는 인자로 a와 b를 받고(#1), 지역 변수로 c와 d를 선언합니다(#2, #3). 함수를 호출하면(#5) 그림 5-1과 같은 스택 프레임이 메모리에 생깁니다.
그림 5-1 test( ) 함수의 스택 프레임(call by value)
TIP 1절에서 살펴본 스택과 같은 동작을 하므로 스택 프레임이라는 이름이 붙었습니다. 스택 프레임에 대한 자세한 내용은 9장 5절에서 다룹니다.
그림 5-1은 test() 함수가 호출될 때 생기는 스택 프레임입니다. 스택 프레임에는 함수를 호출한 다음 복귀할 주소 값 등 지역 변수 이외의 정보도 담고 있지만, 이번 장에서는 지역 변수에 초점을 맞추겠습니다. #1~#3에 있는 변수 a, b, c, d가 스택 프레임에 쌓여 있습니다.
그림 5-1을 좀 더 확장해 보겠습니다. main() 함수도 함수이므로 스택 프레임을 갖습니다. main() 함수의 스택 프레임을 살펴볼까요?