RAM 영역
---------------------- (높은 주소)
| 코드 | (프로그램 실행 코드)
----------------------
| 데이터 영역 (정적/전역 변수) |
----------------------
| 힙 | (동적 메모리 할당 - 위로 성장)
----------------------
| 스택 | (함수 호출 시 생성 - 아래로 성장)
---------------------- (낮은 주소)
1. 코드(Code) 영역 : 프로그램의 실행코드가 저장되는 공간
2. 데이터(Data) 영역 : 프로그램이 실행될 때 정적(static) 및 전역(global) 변수가 저장되는 영역
3. 힙(Heap) 영역 : 동적 메모리 할당을 담당하는 영역으로, 런타임에 크기가 결정됨
4. 스택(Stack) 영역 : 함수 호출 시 지역변수, 매개변수, 리턴주소 등이 저장되는 영역
함수가 호출될 때마다 새로운 스택 프레임(Stack Frame)이 생성되며
함수 종료 시 자동으로 해제됨
후입선출(LIFO, Last In First Out) 방식, 공간이 한정적
너무 많은 재귀 호출 발생 시 스택 오버플로(Stack Overflow)가 발생할 수 있음