# 메모리 구조
프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 한다.
또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다.
>>프로그램이 운영체제로부터 할당받는 대표적인 4가지 메모리 공간
- 코드(code) 영역
- 데이터(data) 영역
- 스택(stack) 영역
- 힙(heap) 영역
*코드 영역(텍스트 영역)
- 실행할 프로그램의 코드가 저장되는 영역이다.
- CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리해준다.
- 프로그램이 시작하고 종료될 때까지 메모리에 계속 남아있는다.
*데이터 영역(정적메모리)
- 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역이다.
- 프로그램 시작과 동시에 메모리를 할당받게 되고, 프로그램이 종료되면 소멸된다
*스택 영역(자동 메모리)
- 프로그램이 자동으로 사용하는 임시 메모리 영역이다.
- 스택 영역은 함수의 호출과 관계되는 지역 변수/ 매개 변수가 저장되는 영역이다.
- 함수의 호출과 함께 메모리가 할당되며, 해당 객체가 정의된 스코프를 벗어날 때 소멸한다.
- 힙보다 빠르다.
- 함수의 호출하는 위치도 저장한다.(스택 프레임)
void fct1(int);
void fct2(int);
int a = 10; //데이터 영역에 할당
int b = 20; //데이터 영역에 할당
int main() {
int i = 100; //지역 변수 i가 스택영역에 할당
}
void fct1(int c) {
int d = 30; //매개변수 c와 지역변수 d가 스택영역에 할당
}
void fct2(int e) {
int f = 40; //매개변수 e와 지역변수 f가 스택영역에 할당
}
*힙 영역(자유 저장소)
- 힙 영역은 프로그래머가 직접 공간을 할당, 해제하는 메모리 영역이다.
- 선입선출(FIFO)의 방식으로, 가장 먼저 들어온 데이터가 가장 먼저 인출된다.
- 힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.
# 오버플로우(overflow)
한정된 메모리 공간이 부족하여 메모리 안에 있는 데이터가 넘쳐흐르는 현상
- 힙 오버플로우: 힙이 스택 영역에 침범하는 경우
- 스택 오버플로우: 스택이 힙 영역에 침범하는 경우
728x90
'Study > CS(Computer Science)' 카테고리의 다른 글
Code-Refactoring(코드-리펙토링) (0) | 2023.04.11 |
---|---|
네트워크(Network)에 대하여 (0) | 2022.10.29 |
Transaction 과 ACID (0) | 2022.07.20 |
[Web] 클라이언트 / 서버 (0) | 2022.05.25 |
댓글