링커, 로더, 실행 파일

C 언어의 함수 안에서 선언한, static이 붙지 않은 지역 변수(자동 변수)는 실행 중 어디에 놓이는가?

  1. A.data 섹션
  2. B스택(또는 레지스터)
  3. C힙
정답과 해설 보기

정답: B. 스택(또는 레지스터)

지역 변수는 함수가 호출될 때 스택 프레임 안에 만들어지고(최적화로 레지스터에만 놓이기도 합니다), 함수에서 돌아오면 사라집니다. 그래서 재귀로 같은 함수가 몇 겹으로 호출되어도 각각 별개의 변수를 가질 수 있습니다. 실행 파일 안에 지역 변수를 위한 섹션은 없으며, 함수의 시작 부분에서 스택 포인터를 움직여 영역을 확보합니다.

  • A. .data는 전역 변수 등의 영역입니다.
  • B. 올바릅니다. 함수가 호출될 때마다 스택 프레임에 만들어집니다.
  • C. 힙은 malloc 등으로 확보하는 영역입니다.
이 분야 연습하기 분야로 돌아가기

링커, 로더, 실행 파일의 다른 문제

  1. C 언어의 malloc으로 확보한 메모리는 일반적으로 프로세스의 어느 영역에서 가져오는가?
  2. Linux 등의 일반적인 프로세스의 메모리 배치를 주소가 작은 쪽부터 나열한 것으로 올바른 것은?
  3. 프로세스의 힙과 스택을 사이에 넓은 빈 공간을 두고 서로 반대 방향으로 늘어나도록 배치할 때의 이점으로 올바른 것은?
  4. 정적 링크에 대한 설명으로 올바른 것은?
  5. 동적 링크(공유 라이브러리)의 이점으로 올바른 것은?

이 분야의 비교