Memory Structure?
- 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 **로드(load)**되어야 한다.
- 또한 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다.
- 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있다.
- 프로그램이 운영체제로부터 할당 받는 대표적인 **메모리 공간(RAM)**은 다음과 같다.
- 스택(Stack) 영역
- 힙(Heap) 영역
- 데이터(data) 영역
- 코드(code) 영역

스택(Stack) 영역 : 지역변수, 매개변수. OS가 관리
- 메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이다.
- 스택 영역은 함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸한다.
- 이렇게 스택 영역에 저장되는 함수의 호출 정보를 **스택 프레임(Stack frame)**이라고 한다.
- 스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당된다.
- Stack 영역이 클 수록 Heap 영역이 작아지고, Heap 영역이 클 수록 Stack 영역이 작아진다.
- 스택 영역은 컴파일 시에 크기가 결정된다.
장점
- 낭비되는 공간이 없다.
- 하나의 명령만으로 메모리 조작과 어드레스 조작이 가능하다.
단점
- 한계가 있어 한계를 초과하도록 삽입할 수 없다.
- 유연성이 부족하다.
힙 (Heap) 영역 : 동적 메모리. 개발자가 관리