Learning
토픽 111 / 111·코드 실행 체계 (Code Execution Model)

메모리 4영역 (Code/Data/Heap/Stack)

메모리 4영역 (Code/Data/Heap/Stack)

프로세스 실행 시 운영체제가 할당하는 가상 메모리 공간을 용도별로 구분한 4개 논리적 영역으로, 코드·데이터·힙·스택으로 구성

특징: 프로세스별 독립 주소 공간, 영역별 접근 권한 분리(R/W/X), 힙은 위로 성장, 스택은 아래로 성장

4개 영역

  • 코드(Code/Text) 영역: 실행할 기계어 명령어 저장, 읽기 전용(Read+Execute), 컴파일 시 결정, 공유 가능
  • 데이터(Data) 영역: 전역변수·정적변수 저장, 프로그램 시작 시 할당~종료 시 해제, 초기화(.data)/미초기화(.bss) 구분
  • 힙(Heap) 영역: 동적 메모리 할당(malloc/new), 런타임 시 크기 결정, 낮은 주소→높은 주소 성장, 프로그래머가 관리(또는 GC)
  • 스택(Stack) 영역: 지역변수·매개변수·복귀주소 저장, 함수 호출 시 할당/반환 시 해제, 높은 주소→낮은 주소 성장, LIFO

비교

  • 코드(RX/고정/명령어) vs 데이터(RW/고정/전역·정적변수)
  • 힙(RW/동적/개발자관리/느림) vs 스택(RW/자동/컴파일러관리/빠름)

오버플로우

  • 스택 오버플로우: 재귀 과다·큰 지역변수로 스택 한계 초과, Segmentation Fault 발생
  • 힙 오버플로우: 할당 버퍼 크기 초과 쓰기, 메모리 손상·보안 취약점(버퍼 오버플로우 공격)

연관: 가상 메모리, 프로세스 메모리 모델, 버퍼 오버플로우, GC, 메모리 누수