본문 바로가기
Thinking/data structure

메모리 구조 (코드영역, 데이터영역, 힙영역, 스택영역)

by Dev_카페인 2022. 12. 20.
반응형

메모리 구조 (코드영역, 데이터영역, 힙영역, 스택영역)

흔히 메모리라고 하면 RAM을 지칭한다.

프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같다.

  1. 코드(code) 영역
  2. 데이터(data) 영역
  3. 스택(stack) 영역
  4. 힙(heap) 영역

코드(code) 영역

메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역이다.

데이터(data) 영역

메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역이다.

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

스택(stack) 영역

메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다.

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

이렇게 스택 영역에 저장되는 함수의 호출 정보를 스택 프레임(stack frame)이라고 한다.

스택 영역은 높은 주소에서 낮은 주소 방향으로 채워진다.

  • 매우 빠른 액세스
  • 변수를 명시 적으로 할당 해제 할 필요가 없습니다.
  • 공간은 CPU에 의해 효율적으로 관리되고 메모리는 단편화되지 않습니다.
  • 컴파일 타임에 크기가 결정됌

힙(heap) 영역

메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 메모리 영역입니다.

힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.

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

  • 메모리 크기 제한 없음
  • (상대적으로) 느린 액세스
  • 메모리를 관리해야한다.
  • 런 타임에 크기가 결정됌

스택(Stack)과 힙(Heap)영역은 같은 메모리 공간을 공유한다.

Stack을 많이 쓰면 Heap영역이 줄어들고 Heap영역을 많이 쓰면 Stack영역이 줄어든다.

효율적인 공간활용을 위해 힙은 낮은 주소부터 스택은 높은 주소부터 할당된다.

반응형

'Thinking > data structure' 카테고리의 다른 글

B-트리 (B-Tree)  (0) 2023.10.03
레드 블랙 트리 (Red-Black Tree)  (0) 2023.10.02
이진 탐색 트리 (BST : Binary Search Tree)  (0) 2023.10.02
자료구조 트리(Tree) 구조  (0) 2023.09.22
1Byte는 왜 8bit일까?  (0) 2022.09.28