힙과 스택 영역
동적으로 변하는 메모리 영역
나누어진 이유
관리 방식이 서로 다르기 때문
스택(Stack) 영역
- 자동 관리
- 빠름
- 제한적
사용 목적
짧게 쓰고 바로 버릴 데이터 저장
특징
- 크기가 작음 (보통 MB 단위)
- Push(넣기), Pop(꺼내기) 방식으로 관리
- 규칙적인 구조라 속도가 빠름
힙(Heap) 영역
- 수동 관리
- 유연함
- 상대적으로 느림
사용 목적
언제 사용이 끝날지 모르는 데이터 저장
특징
- 크기가 큼 (RAM 대부분 사용 가능)
- 빈 공간 아무 곳에나 할당 가능
- 복잡한 관리가 필요함
오버플로우(Overflow)
오버플로우의 종류에는:
- 힙 오버플로우
- 스택 오버플로우
가 존재한다.
힙은 메모리의 위쪽 주소 방향으로 할당되고,
스택은 메모리의 아래쪽 주소 방향으로 할당된다.
따라서 두 영역이 서로의 공간을 침범할 수 있다.
종류
- 힙이 스택 영역을 침범 → 힙 오버플로우
- 스택이 힙 영역을 침범 → 스택 오버플로우
프로그램이 실행되기 위해서는
운영체제(OS)가 프로그램 정보를 메모리에 로드해야 한다.
또한 CPU가 코드를 처리하기 위해서는
메모리에 데이터가 저장되어 있어야 한다.