본문 바로가기
IT 이것저것

[메모리 구조] 힙(Heap), 스택(Stack) 설명

by 관성맨 2023. 1. 12.
반응형

 

이번에는 메모리의 구조에 대해 설명드리겠습니다.

 

우선, 우리가 바탕화면에서 더블클릭을 하면 프로그램이 실행되는데

 

이 때 프로그램이 실행되기 위해서는 해당 프로그램이 메모리에 로드(Load) 되어야 합니다.

 

그 후 프로그램이 실행되는 동안 프로그램내의 코드들과 명령어를 처리하기 위해서는

 

해당 코드와 명령어를 저장할 메모리가 필요합니다.

 

따라서 운영체제(OS) 는 프로그램의 실행을 위해 다양한 메모리 공간을 제공합니다.

 

운영체제가 제공하는 대표적인 메모리 공간은 아래 4가지 영역 입니다.

 

 

 

 

 

1. 코드(Code) 

2. 데이터(Data)

3. 힙(Heap)

4. 스택(Stack)

 

 

 

 

 

 

1. 코드(Code)영역

말 그대로 코드가 저장되는 영역입니다.

 

텍스트(Text)영역이라고도 하며 실행할 프로그램의 코드가 저장됩니다.

 

프로그램이 시작되고 종료될 때까지 메모리에 남아있게 됩니다.

 

 

 

 

 

 

 

2. 데이터(Data)영역

전역변수와 정적(Static) 변수가 있는 영역입니다.

 

프로그램의 시작과 끝을 함께한다고 생각하면 되는데

 

프로그램이 시작되면 할당되었다가, 프로그램이 종료되면 같이 없어지는 영역입니다.

 

 

 

 

 

 

 

3. 힙(Heap)영역

사용자가 관리하며 사용자에 의해 동적할당되는 영역입니다.

 

즉, 상수선언이 되는 부분이 아니라 사용자 (프로그래머)가 직접 힙 영역을 할당하고 해제하는 메모리 공간입니다.

 

힙 영역은 선입선출(FIFO) 방식으로 먼저 들어온 데이터가 먼저 나가는 형식입니다.

 

 

 

 

 

 

4. 스택(Stack)영역

함수의 호출시 생성되는 부분입니다.

 

함수 호출 시 지역변수와 매개변수가 저장되며, 함수 호출이 완료되면 같이 없어집니다.

 

스택 영역은 후입선출(FIFO)의 방식으로 가장 나중에 들어온 데이터가 가장 먼저 인출됩니다.

 

 

 

그림으로 나타내면 아래와 같습니다.

 

 

 

 

< 스택과 힙의 장단점 >

  스택
특징 빠른 Access

지역 변수

메모리 크기 제한

느린 Access

전역 변수

메모리 크기 제한 없음

 

반응형

댓글