더북(TheBook)


4.3스택 세그먼트


스택 세그먼트(stack segment)는 지역 변수가 저장되는 공간입니다. 지역 변수가 저장된다는 것은 함수를 호출했을 때 그 스택 프레임이 스택 세그먼트에 생성된다는 의미입니다. 그림 9-2에서 스택에 있는 화살표는 스택이 늘어날 수 있는 방향을 의미한다고 했습니다. 함수가 호출되면 그 함수의 스택 프레임이 스택 세그먼트에 생기고, 함수 실행 도중 다른 함수를 호출하면 다시 호출된 함수의 스택 프레임이 호출한 함수의 스택 프레임 위에 쌓입니다. 스택 세그먼트가 늘어난 것입니다.

그렇다면 어떤 함수 안에서 다른 함수를 호출하고 이 함수가 다시 다른 함수를 호출하고, 그 함수가 또 다른 함수를 호출하면서 계속 스택 프레임을 쌓아 가면 어떻게 될까요? 스택 세그먼트는 런타임 동안 늘어났다 줄어들기를 반복하지만, 최대로 늘어날 수 있는 크기는 정해져 있습니다. 최대 크기는 프로그램을 작성할 때 프로그래머가 정할 수 있는데 정하지 않으면 기본값으로 1MB가 할당됩니다. 스택 프레임이 쌓이다 최대 크기를 넘기면 스택 오버플로(Stack over flow) 오류가 발생합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.