메모리 구조
🧠 메모리 구조란?
정의
메모리 구조는 프로그램이 실행될 때 사용되는 메모리 공간을 용도별로 나눈 구성이다.
프로그램은 실행 중에 코드, 전역 데이터, 동적 객체, 함수 호출 정보 등을 서로 다른 영역에 저장한다.
이 구조를 이해하면 메모리 사용 방식과 오류 원인을 파악하기 쉬워진다.

🧩 주요 영역
Code 영역
- 프로그램의 소스코드가 저장되는 영역이다.
- 함수, 제어문, 상수 등이 포함된다.
- 실행 파일의 명령어가 위치한다.
Data 영역
- 전역 변수와
static변수가 저장되는 영역이다. - 프로그램 시작과 동시에 할당되고 종료 시 소멸한다.
- 초기화된 데이터와 초기화되지 않은 데이터가 함께 관리된다.
Heap 영역
정의
Heap은 동적으로 메모리를 할당하고 해제하는 영역이다.
- 프로그래머가 직접 또는 런타임이 동적으로 할당하는 메모리 공간이다.
- 객체, 클래스 인스턴스, 가변 크기 데이터 등이 위치한다.
- 크기가 실행 중에 결정된다.
- 메모리 누수와 관련된 이슈가 자주 발생한다.
Stack 영역
정의
Stack은 함수 호출과 지역 변수 저장에 사용되는 임시 메모리 영역이다.
- 함수 호출 시 생성되는 지역 변수와 매개변수가 저장된다.
- 함수가 끝나면 함께 소멸한다.
- 호출 흐름과 함께 빠르게 관리된다.
🔍 영역별 차이
| 영역 | 특징 | 생명주기 |
|---|---|---|
| Code | 실행 코드 저장 | 프로그램 종료까지 |
| Data | 전역/정적 데이터 저장 | 프로그램 종료까지 |
| Heap | 동적 할당 메모리 | 명시적 해제 또는 GC |
| Stack | 함수 호출 정보와 지역 변수 저장 | 함수 호출 동안 |
⚠️ 주의할 점
- Heap은 동적 할당이 많아서 관리가 중요하다.
- Stack은 너무 많이 사용하면 스택 오버플로가 발생할 수 있다.
- 메모리 구조를 알면 누수, 참조 문제, 범위 문제를 이해하기 쉬워진다.
📌 정리
- 메모리 구조는 프로그램이 실행되는 동안 사용되는 영역을 나눈 것이다.
- Code, Data, Heap, Stack의 역할이 다르다.
- 각 영역의 생명주기와 용도를 이해하면 디버깅에 도움이 된다.
댓글남기기