링커, 로더, 실행 파일

위의 전역 변수 중 일반적으로 .bss 섹션에 놓이는 것의 조합은?

int a = 5;
int b;
static int c = 0;
const int d = 7;
  1. Aa와 b
  2. Bb와 c
  3. Cc와 d
정답과 해설 보기

정답: B. b와 c

a는 0이 아닌 초깃값이 있으므로 .data, b는 초깃값이 없어 0에서 시작하므로 .bss, c는 초깃값이 0이므로 파일에 0을 저장할 필요가 없어 .bss에 놓입니다. d는 const 상수이므로 쓰기 금지인 .rodata에 놓입니다. static은 다른 파일에서 보이는지를 정하는 것이며, 어느 섹션에 놓이는지는 초깃값과 const로 정해집니다.

  • A. a는 초깃값 5가 있으므로 .data입니다.
  • B. 올바릅니다. 초깃값이 없는 변수와 초깃값이 0인 변수입니다.
  • C. d는 바뀌지 않는 상수이므로 .rodata입니다.
이 분야 연습하기 분야로 돌아가기

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

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

이 분야의 비교