Tags
- 큐
- Tree
- M:N
- drf
- outer join
- Article & User
- delete
- 그리디
- 뷰
- 이진트리
- 완전검색
- Queue
- SQL
- migrations
- 통계학
- distinct
- ORM
- stack
- update
- 트리
- N:1
- regexp
- create
- count
- Vue
- DB
- 스택
- Django
- 쟝고
- 백트래킹
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Notice
Recent Posts
Link
데이터 분석 기술 블로그
Heap Overflow 본문
힙(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
- 메모리 사용량을 분석하여 최적화 가능
'데이터 사이언스 > 알고리즘' 카테고리의 다른 글
힙 정렬 (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 |