링커, 로더, 실행 파일

C 언어의 malloc으로 확보한 메모리는 일반적으로 프로세스의 어느 영역에서 가져오는가?

  1. A.text 섹션
  2. B힙
  3. C.rodata 섹션
정답과 해설 보기

정답: B. 힙

힙은 프로그램 실행 중에 필요한 크기의 메모리를 확보하고, 필요 없어지면 free로 반환하는 영역입니다. 확보하는 크기나 수명을 실행 시에 정할 수 있다는 것이 특징입니다. malloc은 스스로 빈 영역을 관리하다가 부족해지면 OS에 요청해 영역을 넓힙니다(Linux에서는 brk나 mmap 시스템 콜). free를 잊으면 쓰지 않는 메모리가 계속 남는 메모리 누수가 됩니다.

  • A. .text는 기계어 영역이며 쓸 수 없습니다.
  • B. 올바릅니다. 실행 중에 필요한 만큼 확보하는 영역입니다.
  • C. .rodata는 쓰기 금지인 상수 영역입니다.
이 분야 연습하기 분야로 돌아가기

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

  1. Linux 등의 일반적인 프로세스의 메모리 배치를 주소가 작은 쪽부터 나열한 것으로 올바른 것은?
  2. 프로세스의 힙과 스택을 사이에 넓은 빈 공간을 두고 서로 반대 방향으로 늘어나도록 배치할 때의 이점으로 올바른 것은?
  3. 정적 링크에 대한 설명으로 올바른 것은?
  4. 동적 링크(공유 라이브러리)의 이점으로 올바른 것은?
  5. 동적 링크를 사용한 프로그램을 다른 컴퓨터에 복사해 실행했더니 시작되지 않았다. 가장 가능성이 높은 원인은?

이 분야의 비교