링커, 로더, 실행 파일
.bss 섹션의 특징으로 올바른 것은?
- A함수의 지역 변수를 호출될 때마다 놓는 영역이다
- B초깃값이 없는(또는 0인) 변수의 영역으로, 파일에는 크기만 기록하고 읽어 들일 때 0으로 채운다
- C상수 문자열을 놓는, 쓰기가 불가능한 영역이다
정답과 해설 보기
정답: B. 초깃값이 없는(또는 0인) 변수의 영역으로, 파일에는 크기만 기록하고 읽어 들일 때 0으로 채운다
초깃값을 쓰지 않은 전역 변수나 정적 변수는 C 언어의 규칙에 따라 0에서 시작합니다. 내용이 모두 0이라면 파일에 0을 늘어놓아 저장하는 것은 낭비이므로, .bss 섹션에는 크기만 기록하고 로더가 메모리를 확보해 0으로 채웁니다. 예를 들어 「static char buf[1000000];」이 있어도 실행 파일이 1MB 커지지는 않습니다.
- A. 지역 변수는 스택에 놓입니다.
- B. 올바릅니다. 파일 크기를 절약할 수 있습니다.
- C. 상수는 .rodata에 놓입니다.