C언어 메모리 구조 [스택(Stack), 힙(Heap), 데이터(Data)영역]
본문 바로가기
CS/알고리즘 및 자료구조

C언어 메모리 구조 [스택(Stack), 힙(Heap), 데이터(Data)영역]

by IYK2h 2020. 8. 14.
728x90

코드(CODE) 영역

프로그래머가 작성한 소스코드가 들어있는 부분이다.

실행할 프로그램의 코드가 저자오디는 영역으로 텍스트(code) 영역 이라고도 부른다

CPU는 코드 영역의 코드를 하나씩 수행한다.

데이터(DATA) 영역

데이터 영역에는 전역 변수와 정적변수가 선언된다.

데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다.

힙(HEAP) 영역 

프로그래머가 메모리를 직접 관리해야하는 영역이다.

동적 메모리 할달을 이용해 사용자에 의해 메모리의 크기가 동적으로 할당되고 해지는 필수로 해야된다.

힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다. 스텍 영역은 반대로 할당된다.

(동적할당-iyk2h.tistory.com/81)

스택(STACK) 영역

지역 변수와 매개변수가 저장되는 영역이다.

스택 영역은 함수(블럭)의 호출과 함께 할당되며, 함수(블럭)의 호출이 완료되면 소멸된다.

스택은 후입선출 방식에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출된다.

스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당된다. 힙 영역은 반대로 할당된다.

 

힙 영역과 스택 영역은 Free store 공간을 공유하기에 반비례 관계이다.

 

 

 

 

프로그램 실행 순서

1.실행 요청.

2.프로그램의 정보를 읽어 메모리에 로드한다.

3.CPU는 프로그램 코드를 가져다 메모리를 관리하고 명령문을 실행한다.

4.동적 메모리가 할당되면 Free Store 영역을 사용한다.

5. 스텍 메모리가 할당되면 Free Store 영역을 사용한다.

728x90

댓글