메모리 구조 (프로세스 메모리 레이아웃)
비유: 아파트 층별 구조
프로세스가 사용하는 메모리를 아파트라고 생각해보세요. 각 층마다 역할이 다릅니다.
높은 주소
┌─────────────────────────┐
│ Stack │ ← 5층: 함수 호출 기록, 지역변수
│ (아래로 성장 ↓) │ (자동 관리 - 함수 끝나면 사라짐)
├─────────────────────────┤
│ ↕ │ ← 빈 공간 (Stack ↔ Heap이 서로 마주보며 성장)
├─────────────────────────┤
│ Heap │ ← 4층: 동적 할당 공간 **누수 발생 지점!**
│ (위로 성장 ↑) │ (수동 관리 - 개발자가 직접 해제해야 함)
├─────────────────────────┤
│ BSS │ ← 3층: 초기화 안 된 전역변수
├─────────────────────────┤
│ Data │ ← 2층: 초기화된 전역변수
├─────────────────────────┤
│ Text │ ← 1층: 실행 코드 자체
└─────────────────────────┘
낮은 주소이 문서의 누수는 4층(Heap)에서 발생! 짐을 계속 쌓기만 하고 치우지 않아서 아파트가 꽉 찬 상황
출처: Codyssey-B1/B4-2