프로세스의 메모리는 세그먼테이션에 의해 그 역할이 할당되어 있다. 표준 C언어로 작성된 프로그램이 컴파일 후 실행파일로 변환되어 메모리를 할당 받았을 때, 이 프로그램에 할당된 세그먼트에 대한 설명으로 옳은 것은?
1
데이터 세그먼트는 모든 서브루틴의 지역변수와 서브루틴 종료 후 돌아갈 명령어의 주소값을 저장한다.
오답 이유서브루틴의 지역 변수와 복귀 주소는 일반적으로 스택 프레임에 저장되며 데이터 세그먼트 대상이 아니다.
2
스택은 현재 실행 중인 서브루틴의 매개변수와 프로그램의 전역변수를 저장한다.
오답 이유스택은 매개변수·지역 변수·복귀 주소를 담지만 전역 변수는 데이터/BSS 영역에 둔다.
3
코드 세그먼트는 CPU가 실행할 명령어와 메인 서브루틴의 지역변수를 저장한다.
오답 이유코드 세그먼트에는 실행 명령이 저장되지만 main의 자동 지역 변수는 스택에 놓인다.
4
힙(Heap)은 동적 메모리 할당을 위해 사용되는 공간이고, 주소값이 커지는 방향으로 증가한다.
정답 근거힙은 malloc 같은 동적 할당에 사용되며 전형적인 프로세스 배치에서는 낮은 주소에서 높은 주소 쪽으로 자란다.
정답·상세해설
정답 4번
힙(Heap)은 프로그램 실행 중 런타임에 동적으로 메모리를 할당받기 위해 사용하는 영역이며, 일반적으로 낮은 주소에서 높은 주소 방향으로 증가하며 할당됩니다.
데이터 세그먼트: 전역변수를 저장하는 공간입니다. 스택: 지역변수와 복귀 주소값을 저장하는 공간입니다. 코드 세그먼트: 실행할 명령어 (기계어)가 저장되는 공간입니다.