프로세스 주소 공간
구조
code (text) 영역
- CPU가 해석 가능한 기계어 형태로 프로그램 코드가 저장되어 있는 공간
- Read-Only (프로그램 수정 방지)
- 같은 프로그램으로 실행된 여러 프로세스는 동일한 코드
data 영역
- 코드가 실행되면서 사용하는 전역 변수, 정적 변수 데이터가 저장되어 있는 공간
- 프로그램 시작과 함께 할당, 프로그램 종료 시 소멸
stack 영역
- 지역 변수, 매개변수 등 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장하는 독립적인 공간
- 함수 호출과 함께 할당, 함수 호출 완료 시 소멸
- 메모리의 높은 주소 → 낮은 주소로 할당
- 함수가 stack 영역을 초과하면 stack overflow 에러 발생
heap 영역
- 생성자, 인스턴스와 같이 동적으로 할당되는 데이터들을 저장하는 공간
- 런타임에 따라 크기 결정
- 동적으로 할당 / 해제
- 메모리의 낮은 주소 → 높은 주소로 할당