-
[C# 개념] 3.3 값 형식과 참조 형식Anna belly belly hard/C# 2023. 6. 21. 14:54반응형
- 값 형식 (Value Type) : 변수가 값을 담는 데이터 형식 => 스택 메모리 영역(Stack)
- 참조 형식(Reference Type) : 변수가 값 대신 값이 있는 곳의 위치(참조)를 담는 데이터 형식 => 힙 메모리 영역(Heap)
- C# 으로 작성한 프로그램이 사용하는 두가지 메모리 영역 : Stack, Heap
3.3.1 스택과 값 형식
- 값 형식의 변수는 모두 이 스택에 저장됩니다. 다시 말해, 코드 블록 안에서 생성된 모든 값 형식의 변수들은 프로그램 실행이 코드 블록을 닫는 중괄호를 만나면 메모리 에서 제거 됩니다.
3.3.2 힙과 참조 형식
- 힙은 저장된 데이터를 스스로 제거하는 메커니즘을 가지고 있지 않는다. => CLR의 가비지 컬렉터
- 가비지 컬렉터는 프로그램 뒤에 숨어 동작하면서 힙에 더이상 사용하지 않는 객체가 있으면 그 객체를 쓰레기로 간주하고 수거하는 기능을 한다.
- 프로그래머가 원한다면 언제 까지라도 데이터를 살릴 수 있는 또 다른 메모리 영역을 CLR 이 제공하는 것, 코드 블록이 종료되는 지점과 상관없이 그 데이터는 계속 생명을 유지한다. 그리고 이 데이터는 프로그래머가 더 이상 사용하지 않는 쓰레기가 됐을 때 가비지 컬렉터가 가져다 버립니다. 이때 메모리 에서 사라지는 것.
- 참조형식의 힙과 스택 함께 이용되는데, 힙에는 데이터를 저장하고 , 스택 에는 데이터가 저장된 힙 메모리의 주소를 저장합니다.
- 스택 : 변수의 생명주기가 다하면 자동으로 데이터를 제거.
- 힙 : 더이상 데이터를 참조하는 곳이 없을 때 가비지 컬렉터가 데이터를 치워주는 구조의 메모리 영역.
반응형'Anna belly belly hard > C#' 카테고리의 다른 글
[C# 개념] 3.5 상수와 열거 형식 (0) 2023.06.29 [C# 개념] 3.4 기본 데이터 형식 (0) 2023.06.26 [C# 개념] 3.2 변수 (0) 2023.06.21 [C# 개념] 3.1 다양한 데이터의 종류 (0) 2023.06.21 [C# 개념] Chapter 3. 데이터 보관하기 (0) 2023.06.21