메모리 구조 Memory Structure

Gogi·2023년 5월 25일
0

C언어 기초 목록

목록 보기
20/23

메모리의 4가지 영역

메모리 구조는 프로그램이 실행되는 동안 OS가 사용되는 메모리 공간을 분류하는 방법을 말한다. 메모리를 서랍장 수납 공간이라 가정하면 각각의 유사한 성향의 데이터를 묶어서 관리가 용이해지고, 찾는 속도도 더 빠를 수 있다.


개념 설명

1. 코드 영역 (Code Area)

프로그램의 명령어, 함수 및 프로그램 코드를 저장하는 데 사용된다. 이 영역은 실행 가능한 프로그램의 명령어들이 위치하며, 실행 중인 프로그램의 명령어가 저장된다.

2. 데이터 영역 (Data Area)

전역 변수와 정적(Static) 변수를 저장하는 데 사용된다. 언제든 값을 변경할 수 있고 초기화가 가능하다. 이 변수들은 프로그램의 시작 시점부터 종료 시점까지 메모리에 상주한다.

3. 힙 (Heap)

동적으로 할당된 메모리를 관리하는 데 사용된다. 힙은 개발자가 직접 할당 및 해제할 수 있는 메모리 영역이며 주로 동적으로 생성된 객체, 배열 또는 자료구조를 저장하는 데 사용된다.

4. 스택 (Stack)

지역변수, 매개변수를 저장하는 데 사용된다. 스택은 후입선출(LIFO, Last-In-First-Out) 방식으로 동작한다. 가장 최근에 추가된 항목이 가장 먼저 제거되는 구조를 의미한다.

5. 스태틱 메모리 영역 (Static Memory Area)

정적(Static) 변수상수를 저장하는 데 사용된다. 프로그램의 시작 시점부터 종료 시점까지 메모리에 상주한다는 점은 같지만 데이터 영역과 달리 한 번 초기화된 이후엔 값을 변경할 수 없다는 점이 다르다.


용어 설명

- 후입선출(LIFO, Last-In-First-Out)

데이터가 들어온 순서의 역순으로 제거되는 데이터 구조를 의미한다. 이는 가장 최근에 추가된 데이터가 가장 먼저 제거되는 방식이다. 스택(Stack)은 후입선출을 기반으로 동작하는 자료구조 중 하나다. 데이터를 추가할 때는 스택의 맨 위에 데이터를 쌓고(push), 제거할 때는 맨 위에 있는 데이터를 꺼내는(pop) 방식으로 동작한다.

profile
C, C++, C#, Unity

0개의 댓글