메모리의 구조

  • 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 합니다.
  • 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다.

    -> 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있습니다.

메모리 공간

스택(stack) 영역

  • 메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다.
  • 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다.
  • 스택 영역은 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출합니다.
  • 이러한 스택은 후입선출(LIFO, Last-In First-Out) 방식에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출됩니다.
  • 스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됩니다.

힙(heap) 영역

  • 메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 메모리 영역입니다.
  • 힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됩니다.
  • 힙 영역은 선입선출(FIFO, First-In First-Out)의 방식으로, 가장 먼저 들어온 데이터가 가장 먼저 인출 된다.
  • 힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됩니다.

스택 vs 힙

  • 스택은 로컬 변수와 함수 호출을 저장하는 데 사용되며 운영 체제에 의해 관리되고, 힙은 동적으로 할당된 데이터를 저장하는 데 사용되며 프로그래머에 의해 관리됩니다.

데이터(data) 영역

  • 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역입니다.
  • 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다.

코드(code) 영역

  • 메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code) 영역이라고도 부릅니다.
  • CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다.
서브목차