티스토리 뷰
프로그램 실행 시 운영체제는 우리가 실행시킨 프로그램을 위해 메모리 공간을 할당함.
대표적으로 코드, 데이터, 힙, 스택 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
스택, 힙, 코드, 데이터영역
OS에서 프로세스가 바라보는 메모리 영역은 크게 코드(Code), 데이터(Data), 힙(Heap), 스택(stack) 영역으로 나뉘어진다. Code 영역 프로세스가 실행할 코드와 매크로 상수가 기계어의 형태로 저장된 공
selfish-developer.com
https://all-young.tistory.com/17
메모리의 구조 (코드, 데이터, 힙, 스택 영역)
목차 메모리 코드(code) 영역 데이터(data) 영역 힙(heap) 영역 스택(stack) 영역 오버 플로우 메모리 위 그림과 같이, 프로그램이 실행되기 위해서는 운영체제(OS)가 프로그램의 정보를 메모리에 로드
all-young.tistory.com
https://wooono.tistory.com/339
[Memory] 코드, 데이터, 스택, 힙 영역
C언어의 메모리 구조 프로그램을 실행시키면, 운영체제는 우리가 실행시킨 프로그램을 위해, 메모리 공간을 할당해줍니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 4가지
wooono.tistory.com
'프로그래밍언어 > 프로그래밍 기초' 카테고리의 다른 글
[프로그래밍기초] SSL 이란.. (0) | 2020.06.14 |
---|---|
[프로그래밍 기초] GET과 POST의 차이. (0) | 2020.06.05 |
[프로그래밍 기초] Session과 Cookie의 차이 (0) | 2020.06.05 |
[프로그래밍 기초] Math 클래스의 반올림, 올림, 내림 등등의 내장함수. (0) | 2020.05.23 |