메모리 저장 구조


Code 영역

  • 함수!, 제어문, 상수 등등 함수에 대한 기계어 코드가 들어감
  • 읽기전용 데이터
  • CPU 가 이 영역에 있는 명령을 읽고 처리

Data 영역 (DATA +BSS)

  • 초기값 있는 전역변수, 배열, static으로 선언된 변수가 들어감
  • 전역(global)변수, 정적(static)변수, 초기화된 배열과 그 구조들이 저장되는 영역
  • 프로그램 시작과 동시에 할당되고, 프로그램 종료시 메모리 소멸.
  • 전역 변수와 정적(static) 변수가 저장되는 영역입니다.

Bss 영역

  • 초기값 없는 전역변수, 배열, static으로 선언된 변수가 들어감
  • Compile time에 크기가 결정되고 이후로 변동되지 않는다.

Heap 영역

  • 동적할당(malloc)으로 할당된 변수가 들어감. 프로그래머 영역
  • 더 이상 해당 힙 영역을 참조하는 변수가 없을 경우 소멸된다.
  • 선입선출
  • 힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됩니다.

Stack 영역

  • 지역변수, 블록내에서 할당된 변수가 들어감. 블록을 벗어나면 사라짐
  • 함수 시작과 함계 변수들이 생성되었다가 종료시 반환
  • 값타입 저장공간
  • 선입후출
  • 스택 영역은 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출
  • 스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향

 

Run time에 Bss와 Heap사이를 기준으로 해서, Heap은 아래로 순차적으로 메모리를 사용하고,
Stack은 위쪽으로 순차적으로 메모리를 사용한다

+ Recent posts