링커, 로더, 실행 파일

프로세스의 힙과 스택을 사이에 넓은 빈 공간을 두고 서로 반대 방향으로 늘어나도록 배치할 때의 이점으로 올바른 것은?

  1. A어느 쪽이 얼마나 쓸지 미리 알 수 없어도 빈 공간을 양쪽이 유연하게 나누어 쓸 수 있다
  2. B힙과 스택이 같은 주소를 동시에 쓸 수 있으므로 메모리가 두 배가 된다
  3. C스택이 넘치는 일이 절대 없어진다
정답과 해설 보기

정답: A. 어느 쪽이 얼마나 쓸지 미리 알 수 없어도 빈 공간을 양쪽이 유연하게 나누어 쓸 수 있다

힙은 주소가 큰 쪽으로, 스택은 작은 쪽으로 늘어나므로, 사이의 빈 공간은 힙을 많이 쓰는 프로그램에도 스택을 많이 쓰는 프로그램에도 사용할 수 있습니다. 각각에 고정된 크기를 할당하면 한쪽이 남아도 다른 쪽이 넘칠 수 있습니다. 다만 스택에는 상한이 설정되어 있는 경우가 많아, 너무 깊은 재귀는 상한을 넘어 스택 오버플로가 됩니다.

  • A. 올바릅니다. 가상 주소 공간을 효율적으로 사용할 수 있습니다.
  • B. 같은 주소를 동시에 사용할 수는 없습니다.
  • C. 깊은 재귀 등에서는 스택이 넘칩니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 정적 링크에 대한 설명으로 올바른 것은?
  2. 동적 링크(공유 라이브러리)의 이점으로 올바른 것은?
  3. 동적 링크를 사용한 프로그램을 다른 컴퓨터에 복사해 실행했더니 시작되지 않았다. 가장 가능성이 높은 원인은?
  4. 정적 라이브러리(.a 파일)와 함께 링크할 때 링커가 실행 파일에 포함시키는 것으로 올바른 것은?
  5. GNU 링커에서 「gcc -lmylib main.o」처럼 정적 라이브러리를 그것을 사용하는 오브젝트 파일보다 앞에 쓰면 미정의 참조 오류가 나는 경우가 있다. 그 이유로 올바른 것은?

이 분야의 비교