[c] 함수의 호출 스택

함수의 호출 스택은 프로그램이 함수를 호출할 때 호출되는 순서를 기록하는 데이터 구조입니다. 이 데이터 구조는 함수가 호출되면 스택에 새로운 프레임이 추가되고, 함수가 실행을 완료하면 스택에서 프레임이 제거됩니다.

함수를 호출할 때마다 호출 스택은 새로운 프레임이 맨 위에 추가되어 현재 실행 중인 함수의 상태를 기록하고, 함수가 반환될 때마다 해당 프레임이 스택에서 제거됩니다.

이것은 마치 책을 쌓아놓는 것과 같다고 생각할 수 있습니다. 맨 처음에 쌓은 책이 가장 아래에 있고, 나중에 쌓은 책이 위에 쌓이는 것과 같이, 함수 호출 스택도 마지막에 호출된 함수가 가장 위에 위치합니다.

예를 들어, 다음과 같은 JavaScript 코드가 있다고 가정해봅시다.

function firstFunction() {
  secondFunction();
}

function secondFunction() {
  thirdFunction();
}

function thirdFunction() {
  // Some code here
}

firstFunction();

위 코드에서 firstFunction이 호출되면 호출 스택에 firstFunction의 프레임이 추가됩니다. 그 후에 firstFunction에서 secondFunction을 호출하면, 호출 스택의 맨 위에 secondFunction의 프레임이 추가됩니다. 이어서 secondFunction에서 thirdFunction을 호출하면, 호출 스택의 맨 위에 thirdFunction의 프레임이 추가됩니다.

이와 같이 함수가 호출될 때마다 호출 스택에 새로운 프레임이 추가되고, 함수가 반환될 때마다 해당 프레임이 제거되는 방식으로 호출 스택이 관리됩니다.

참고 자료