링커, 로더, 실행 파일
C 언어의 함수 안에서 선언한, static이 붙지 않은 지역 변수(자동 변수)는 실행 중 어디에 놓이는가?
- A.data 섹션
- B스택(또는 레지스터)
- C힙
정답과 해설 보기
정답: B. 스택(또는 레지스터)
지역 변수는 함수가 호출될 때 스택 프레임 안에 만들어지고(최적화로 레지스터에만 놓이기도 합니다), 함수에서 돌아오면 사라집니다. 그래서 재귀로 같은 함수가 몇 겹으로 호출되어도 각각 별개의 변수를 가질 수 있습니다. 실행 파일 안에 지역 변수를 위한 섹션은 없으며, 함수의 시작 부분에서 스택 포인터를 움직여 영역을 확보합니다.
- A. .data는 전역 변수 등의 영역입니다.
- B. 올바릅니다. 함수가 호출될 때마다 스택 프레임에 만들어집니다.
- C. 힙은 malloc 등으로 확보하는 영역입니다.