- 스택(Stack) -
동적
- 함수 호출과 관련된 지역 변수, 함수 인자, 리턴 주소 등이 저장되는 영역
- 스택은 함수가 호출될 때마다 새로운 프레임이 추가되며 함수가 종료되면 해당 프레임이 제거됨
- 스택 영역은 보통 높은 주소에서 낮은 주소로 확장
- 힙(Heap) -
동적
- 동적으로 할당된 메모리가 저장되는 영역
- 프로그램 실행 중에 malloc, calloc, realloc 등의 함수로 메모리를 할당받고 free 함수로 해제할 수 있음
- 힙 영역은 보통 낮은 주소에서 높은 주소로 확장
- 데이터 세그먼트(Data segment) -
정적
- 초기화된 전역 변수와 정적 변수가 저장되는 영역
- 프로그램이 시작될 때 값이 설정된 변수들이 이곳에 위치
- BSS 세그먼트(Block Started by Symbol Segment) -
정적
- 초기화되지 않은 전역 변수와 정적 변수가 저장되는 영역
- 프로그램이 시작될 때 값이 설정되지 않은 변수들이 이곳에 위치
- 초기값은 0으로 설정되며
static
으로 선언된 변수 및 int d;
와 같이 명시적으로 초기화되지 않은 변수 그리고 static int d = 0;
처럼 0으로 초기화된 변수를 포함
- 코드 세그먼트(Code/Text Segment) -
정적
- 프로그램의 실행 코드가 저장되는 영역
- 주로 읽기 전용으로 설정되어 있으며 실행 가능한 명령어들이 위치함