티스토리 뷰
프로그램 실행 시 운영체제는 우리가 실행시킨 프로그램을 위해 메모리 공간을 할당함.
대표적으로 코드, 데이터, 힙, 스택 4가지가 있다.
01. 코드 (Code)
- 실행할 프로그램의 코드가 저장되는 영역.
- 기계어의 형태로 저장, 컴파일 타임에 결정되고, 중간에 코드를 바꿀 수 없게 Read-Only로 지정.
- 텍스트 영역이라고 불린다.
- CPU는 코드 영역에 저장된 명령을 하나씩 가져가서 처리.
- 프로그램이 시작하고 종료될 때 가지 메모리에 계속 남는다.
02. 데이터 (Data)
- 전역변수, static(정적) 변수가 저장되는 영역.
- 전역변수, static 값을 참조한 코드는 컴파일 하고 나면 Data 영역의 주소값을 가르키도록 바뀐다.
- 실행 중도에 전역변수가 변경될 수 있으니 이 영역은 Read-Write로 지정되어 있다.
03. 힙 (Heap)
- 프로그래머가 직접 공간을 할당, 해제하는 메모리 공간.
- malloc() 또는 new 연산자를 통해 메모리를 할당하고, free() 또는 delete 연산자를 통해 메모리를 해제한다.
- 선입선출 (FIFO, First-In First-Out)의 방식으로, 가장 먼저 들어온 데이터가 가장 먼저 인출 된다.
04. 스택 (Stack)
- 프로그램이 자동으로 사용하는 임시 메모리 영역
- 함수 호출 시 생성되는 지역 변수, 매개 변수, 리턴 값, 돌아올 주소 등등이 저장되는 영역
(즉 함수 호출이 완료되면 사라진다.)
- 컴파일 타임에 크기가 결정되기 대문에 무한으로 할당할 순 없앋. 재귀 함수가 너무 깊게 호출이 되거나 함수가 지역
변수를 너무 많이 가지고 있어 stack 영역을 초과하면 stack overflow 에러가 발생한다.
- 스택 영역에서 Push로 데이터를 저장하고 Pop으로 데이터를 인출한다.
REFERENCE
https://all-young.tistory.com/17
https://wooono.tistory.com/339
'프로그래밍언어 > 프로그래밍 기초' 카테고리의 다른 글
[프로그래밍기초] SSL 이란.. (0) | 2020.06.14 |
---|---|
[프로그래밍 기초] GET과 POST의 차이. (0) | 2020.06.05 |
[프로그래밍 기초] Session과 Cookie의 차이 (0) | 2020.06.05 |
[프로그래밍 기초] Math 클래스의 반올림, 올림, 내림 등등의 내장함수. (0) | 2020.05.23 |