데이터 사이언스/알고리즘
Heap Overflow
데이터분석가 이채은
2025. 2. 15. 12:03
힙(Heap) 메모리 개념
컴퓨터의 메모리는 "스택(Stack)과 힙(Heap)" 두 영역으로 나뉜다.
메모리 구조 | 설명 |
스택(Stack) 메모리 | 함수 호출 시 지역 변수, 매개변수가 저장됨 (작은 용량, LIFO 구조) |
힙(Heap) 메모리 | 동적 할당된 데이터가 저장됨 (크기가 크지만, 관리 필요) |
- Heap Overflow는 힙 메모리를 과도하게 사용하여 발생
- 스택(Stack)과 다르게 힙은 직접 해제해야 함 (메모리 관리 필요)
2025.01.20 - [데이터 사이언스/알고리즘] - Stack Overflow
Heap Overflow 발생 원인
- 메모리 과다 할당 (너무 많은 객체 생성)
- 너무 큰 리스트(배열)를 할당하면 메모리가 초과됨
- 메모리 누수(Memory Leak)
- 객체가 해제되지 않고 계속 남아있으면 메모리 부족 발생
- 동적 할당 후 해제하지 않음 (C/C++ )
- C/C++에서는 free()를 호출하지 않으면 메모리가 누적됨
Heap Overflow 해결 방법
- 메모리 사용량 줄이기 (효율적인 자료구조 선택)
- 큰 리스트 대신 제너레이터(Generator) 사용
- numpy 배열 활용 → 메모리 절약
- 불필요한 객체 해제
- del을 사용하여 변수 제거 후, gc.collect()로 메모리 해제 가능
- C/C++에서는 malloc/free, new/delete 올바르게 사용
- 힙 메모리는 직접 해제해야 메모리 누수가 발생하지 않음
- 프로파일링 도구 활용 (메모리 사용량 분석)
- Python → memory_profiler, tracemalloc
- C++ → Valgrind
- 메모리 사용량을 분석하여 최적화 가능