데이터 분석 기술 블로그

Heap Overflow 본문

데이터 사이언스/알고리즘

Heap Overflow

데이터분석가 이채은 2025. 2. 15. 12:03

힙(Heap) 메모리 개념

컴퓨터의 메모리는 "스택(Stack)과 힙(Heap)" 두 영역으로 나뉜다.

메모리 구조 설명
스택(Stack) 메모리 함수 호출 시 지역 변수, 매개변수가 저장됨 (작은 용량, LIFO 구조)
힙(Heap) 메모리 동적 할당된 데이터가 저장됨 (크기가 크지만, 관리 필요)

 

  • Heap Overflow는 힙 메모리를 과도하게 사용하여 발생
  • 스택(Stack)과 다르게 힙은 직접 해제해야 함 (메모리 관리 필요)

2025.01.20 - [데이터 사이언스/알고리즘] - Stack Overflow


Heap Overflow 발생 원인

  1. 메모리 과다 할당 (너무 많은 객체 생성)
    • 너무 큰 리스트(배열)를 할당하면 메모리가 초과됨
  2. 메모리 누수(Memory Leak)
    • 객체가 해제되지 않고 계속 남아있으면 메모리 부족 발생
  3. 동적 할당 후 해제하지 않음 (C/C++ )
    • C/C++에서는 free()를 호출하지 않으면 메모리가 누적됨

Heap Overflow 해결 방법

  1. 메모리 사용량 줄이기 (효율적인 자료구조 선택)
    • 큰 리스트 대신 제너레이터(Generator) 사용
    • numpy 배열 활용 → 메모리 절약
  2. 불필요한 객체 해제
    • del을 사용하여 변수 제거 후, gc.collect()로 메모리 해제 가능
  3. C/C++에서는 malloc/free, new/delete 올바르게 사용
    • 힙 메모리는 직접 해제해야 메모리 누수가 발생하지 않음
  4. 프로파일링 도구 활용 (메모리 사용량 분석)
    • Python → memory_profiler, tracemalloc
    • C++ → Valgrind
    • 메모리 사용량을 분석하여 최적화 가능

'데이터 사이언스 > 알고리즘' 카테고리의 다른 글

힙 정렬 (Heap Sort)  (0) 2025.02.17
병합 정렬 (Merge Sort)  (0) 2025.02.16
Stack Overflow  (0) 2025.02.14
퀵 정렬 (Quick Sort)  (0) 2025.02.13
삽입 정렬 (Insertion Sort)  (0) 2025.02.12