힙(Heap) 메모리는 프로그램 실행 중 동적으로 메모리를 할당할 때 사용하는 메모리 영역입니다.
필요한 시점에 원하는 크기만큼 요청할 수 있고, 사용이 끝나면 프로그래머가 직접 해제해야 합니다.
new, malloc() 등을 이용delete 또는 free()를 호출하기 전까지 유지📌 힙 메모리 특징
힙 메모리에 저장되는 변수를 동적 변수라고 합니다.
"동적(Dynamic)"이란 프로그램이 실행되는 도중(런타임)에 생성되고 크기가 결정된다는 의미입니다.
| 구분 | 스택(Stack) 변수 | 힙(Heap) 변수 |
|---|---|---|
| 생성 시점 | 컴파일 시 크기 결정 | 실행 중 크기 결정 |
| 메모리 할당/해제 | 자동 (함수 종료 시 해제) | 수동 (delete, free() 필요) |
| 속도 | 빠름 | 느림 |
| 용량 | 제한적 | 크고 유연함 |
| 예시 | int arr[100]; | int* arr = new int[n]; |
// 정적 변수 (스택)
int arr[100]; // 크기 고정
// 동적 변수 (힙)
int num_elements = get_file_size();
int* dynamic_arr = new int[num_elements]; // 실행 중 크기 결정
// ... 사용 ...
delete[] dynamic_arr; // 반드시 수동 해제
C / C++: 수동으로 메모리 해제 필요 (delete, free())
Java / Python: 가비지 컬렉터(GC)가 자동으로 해제
메모리 누수 방지 팁
nullptr로 초기화💡 결론:
힙 메모리는 유연성과 확장성이 뛰어나지만, 관리 책임은 프로그래머에게 있습니다.
작은 실수가 큰 성능 저하나 크래시로 이어질 수 있으니,
"힙은 필요할 때만, 그리고 꼭 해제"하는 습관을 가지는 것이 좋습니다.