프로그램이 실행되기 위해선 먼저 프로그램이 메모리에 로드Load되어야 한다.
또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다.
컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공한다.
1. 코드code 영역
2. 데이터data 영역
3. 스택stack 영역
4. 힙heap영역
코드 영역
메모리의 코드 영역은 실행할 프로그램의 코드가 저장되는 영역. 텍스트 영역이라고도 함.
CPU는 코드 영역에 저장된 명령어를 하나씩 가져가 처리하게 된다.
데이터 영역
메모리의 데이터 영역은 프로그램의 전역 변수와 정적static 변수가 저장되는 영역.
데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다.
스택 영역
메모리의 스택 영역은 함수의 호출과 관계되는 지역 변수와 매개 변수가 저장되는 영역.
스택 영역은 함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸한다.
이렇게 스택 영역에 저장되는 함수의 호출정보를 스택 프레임stack frame이라고 한다.
스택은 후입선출(LIFO, Last-In First-Out)로 push로 데이터를 저장하고 pop으로 데이터를 인출하며 가장 늦게 저장된 데이터가 먼저 인출된다.
스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당된다.
힙 영역
메모리의 힙 영역은 사용자가 직접 관리할 수 있는 '그리고 그래야만 하는' 메모리 영역이다.
힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.
힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.
'Basic' 카테고리의 다른 글
이클립스 Branch Pull Error (0) | 2020.10.05 |
---|---|
YAML / JSON / XML (0) | 2020.09.16 |