c++

힙과 스택 영역

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

힙과 스택 영역

동적으로 변하는 메모리 영역

나누어진 이유

관리 방식이 서로 다르기 때문


스택(Stack) 영역

  • 자동 관리
  • 빠름
  • 제한적

사용 목적

짧게 쓰고 바로 버릴 데이터 저장

특징

  • 크기가 작음 (보통 MB 단위)
  • Push(넣기), Pop(꺼내기) 방식으로 관리
  • 규칙적인 구조라 속도가 빠름

힙(Heap) 영역

  • 수동 관리
  • 유연함
  • 상대적으로 느림

사용 목적

언제 사용이 끝날지 모르는 데이터 저장

특징

  • 크기가 큼 (RAM 대부분 사용 가능)
  • 빈 공간 아무 곳에나 할당 가능
  • 복잡한 관리가 필요함

오버플로우(Overflow)

오버플로우의 종류에는:

  • 힙 오버플로우
  • 스택 오버플로우

가 존재한다.

힙은 메모리의 위쪽 주소 방향으로 할당되고,
스택은 메모리의 아래쪽 주소 방향으로 할당된다.

따라서 두 영역이 서로의 공간을 침범할 수 있다.

종류

  • 힙이 스택 영역을 침범 → 힙 오버플로우
  • 스택이 힙 영역을 침범 → 스택 오버플로우

프로그램이 실행되기 위해서는
운영체제(OS)가 프로그램 정보를 메모리에 로드해야 한다.

또한 CPU가 코드를 처리하기 위해서는
메모리에 데이터가 저장되어 있어야 한다.

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

전처리 단계  (0) 2026.05.20
스택프레임  (0) 2026.05.19
메모리 4영역  (0) 2026.05.19