CS [개발 지식] 메모리 구조

신재원·2023년 1월 28일
0

CS [개발지식]

목록 보기
4/9

메모리의 구조

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

컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고있습니다.
프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 크게 4가지입니다.

코드 (code) 영역

  • 메모리의 코드 영역은 실행할 프로그램의 코드가 저장되는 영역으로 Text영역이라고도 부릅니다. CPU에서 코드 영역에 저장된 명령어를 하나씩 가져가서 처리한다.

스택 (stack) 영역

  • 메모리의 스택 영역은 프로세스의 메모리 공간을 관리하기 위한 알고리즘들 중 하나이다.
  • 스택 영역은 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출합니다.
  • 이러한 스택은 후입선출(LIFO) 방식에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출됩니다. (데이터가 세로로 쌓임)
  • 함수가 지역변수를 너무 많이 가지고 있어 stack 영역을 초과하면 stack overflow 에러가 발생한다.

힙 (Heap) 영역

  • 메모리의 힙 영역은 프로그래머가 필요할 때마다 사용하는 메모리 영역이다.
  • 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됩니다.
    • 단 사용하고 난 다음에는 "반드시" 해제해야된다, 그렇지 않으면 memory leak 발생

데이터 (Data) 영역

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

정리

  • 스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당.
  • 힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.
  • 스택 영역과 힙 영역이 넘쳐서 서로 만나면 스택 오버플로(Stack Overflow) 현상이 발생하게 된다.

0개의 댓글