| 코드 영역 | 소스코드 |
| 데이터 영역 | 전역 변수, static 변수 |
| 스택 영역 | 값 타입 |
| 힙 영역 | 참조 타입 |
▶ 코드 영역
- 프로그램의 코드가 저장된다.
▶ 데이터 영역
- static으로 선언된 정적 멤버변수, 상수 등이 저장된다.
- 프로그램 시작과 동시에 메모리에 할당되고 프로그램 종료 시 소멸된다.
▶ 스택 영역
- 값 타입 데이터가 저장된다.
- 메서드 호출과 메서드의 지역변수, 매개변수, 메서드 복귀 주소 등이 '스택 프레임'에 저장된다.
- 해당 메서드의 동작이 완료되면 해당 메서드의 스택 프레임이 스택에서 제거된다. (LIFO 방식)
- 선언된 코드 블럭이 종료되면 자동으로 메모리에서 해제된다.
▶ 힙 영역
- 동적으로 할당되는 데이터와 객체들이 저장된다.
- 참조 타입 객체의 데이터가 힙 영역에 저장되고 스택 영역에 저장된 참조(포인터)가 이를 가리킨다.
- 코드 블럭과 상관 없이 데이터가 사라지지 않는다.
- 가비지 컬렉터(GC)가 주기적으로 힙의 메모리를 해제한다.
'✏️ 이론 > C#' 카테고리의 다른 글
| 델리게이트 (Delegate), 이벤트 (Event) (0) | 2023.12.05 |
|---|---|
| [ C# ] 자료구조 (스택, 큐, 딕셔너리, 해시테이블) (0) | 2023.09.05 |
| [ C# ] Object 타입, 박싱, 언박싱 (0) | 2023.09.05 |
| [ C# ] Virtual, Abstract, Interface (0) | 2023.09.04 |
| [ C# ] 자료구조 (Array, List, ArrayList) (0) | 2023.09.04 |