Skip to content

메모리 구조 (프로세스 메모리 레이아웃) ​

비유: 아파트 층별 구조 ​

프로세스가 사용하는 메모리를 아파트라고 생각해보세요. 각 층마다 역할이 다릅니다.

높은 주소
┌─────────────────────────┐
│         Stack           │ ← 5층: 함수 호출 기록, 지역변수
│    (아래로 성장 ↓)       │   (자동 관리 - 함수 끝나면 사라짐)
├─────────────────────────┤
│           ↕             │ ← 빈 공간 (Stack ↔ Heap이 서로 마주보며 성장)
├─────────────────────────┤
│          Heap           │ ← 4층: 동적 할당 공간 **누수 발생 지점!**
│    (위로 성장 ↑)         │   (수동 관리 - 개발자가 직접 해제해야 함)
├─────────────────────────┤
│          BSS            │ ← 3층: 초기화 안 된 전역변수
├─────────────────────────┤
│          Data           │ ← 2층: 초기화된 전역변수
├─────────────────────────┤
│          Text           │ ← 1층: 실행 코드 자체
└─────────────────────────┘
낮은 주소

이 문서의 누수는 4층(Heap)에서 발생! 짐을 계속 쌓기만 하고 치우지 않아서 아파트가 꽉 찬 상황


출처: Codyssey-B1/B4-2