c++

메모리 4영역

코드망령 2026. 5. 19. 09:39

메모리 4영역

  • 코드영역
  • 데이터 영역
  • 힙 영역
  • 스택 영역

  • 코드(Code) 영역 (Text Segment): 프로그램의 소스 코드가 기계어 형태로 저장되는 영역으로, 읽기 전용(Read-Only)영역

      텍스트 영역이라고 부르기도 함.
      CPU는 코드 영역에 저장된 명령을 하나씩 가져가서 처리하게 된다.
      프로그램이 시작하고 종료될 때 까지 메모리에 계속 남아있는다.

  • 데이터(Data) 영역 (Data Segment): 전역 변수(Global), 정적 변수(Static)가 저장되는 곳입니다. 프로그램 시작 시 할당되고 종료 시 해제됨.

      프로그램의 시작과 함께 할당되며 프로그램이 종료되면 소멸한다.
  • 힙(Heap) 영역 (Heap Segment): 사용자가 직접 관리하는 메모리 영역으로, 동적 메모리 할당(malloc 등)에 사용됩니다. 주로 동적인 데이터 구조에 활용됨.

      힙 영역에서 malloc()또는 new연산자를 통해 메모리를 할당하고, free()또는 delete 연산자를 
      통해 메모리를 해제한다.
    
      힙 영역은 선입선출(FIFO, First-In First-Out)의 방식으로, 가장 먼저 들어온 
      데이터가 가장 먼저 인출된다.
    
      이는 힙 영역이 메모리의 낮은 주소에서 높은 주소의 방향으로 할당되기 때문이다.
    
      위(낮은 주소)부터 차곡차곡 아래(높은 주소)방향으로 데이터가 쌓인다고 생각하면 된다.
  • 스택(Stack) 영역 (Stack Segment): 함수 내부의 지역 변수, 매개 변수, 리턴 값 등이 저장되는 영역입니다. 함수가 종료되면 자동으로 메모리가 해제됨.

      함수 호출 시 생성되는 지역 변수와 매개변수가 저장되는 영역이고, 함수호출이 완료되면 사라진다.
    
      이때 스택 영역에 저장되는 함수의 호출 정보를 스택 프레임(stack frame)이라고 한다.
    
      스택 영역에서 푸시(push)로 데이터를 저장하고, 팝(pop)으로 데이터를 인출한다.
    
      스택 영역은 후입 선출(LIFO, Last-In First-Out)의 방식으로, 가장 나중에 들어온 데이터가 
      가장 먼저 인출 된다.
    
      이는 스택영역이 메모리의 가장아래(높은 주소)부터 차곡차곡 위(낮은 주소)의 방향으로 데이터가 
      쌓인다고 생각하면 된다.

'c++' 카테고리의 다른 글

전처리 단계  (0) 2026.05.20
스택프레임  (0) 2026.05.19
힙과 스택 영역  (0) 2026.05.19