본문 바로가기
개발/C#

값형식과 참조형식

by EPdev 2020. 7. 13.
728x90

값형식과 참조형식을 알기 전에 스택(Stack)과 힙(Heap)을 알고 가면 좋다.

 

2020/07/13 - [개발/C#] - Stack and Heap

 

Stack and Heap

윈도우 프로그램은 기본적으로 하나의 스레드를 가진다. 그리고 이 스레드마다 저장소가 메모리에 개별적으로 할당되는데 이 영역이 스택이다.(기본 1MB 할당) 개발자가 변수를 선언하면 스택의

epdev.tistory.com

스택과 힙에 대해 간략히 알아봤다면, 값형식과 참조형식에 대해 알아보자.


값 형식에 속하는 것들은

sbyte, byte, char, short, ushort, int, uint, long, ulong, float, double, decimal, bool 이 있다.

값 형식의 경우 값은 스택에 저장되고, 변수는 그 스택 메모리를 가리키는 식별자다.

 

힙 형식에 속하는 것들은 string, array, class, object 등이다(new 로 선언되는 것들도 포함).

참조 형식의 값은 힙에 저장되고, 변수는 그 힙 메모리를 가르키는 데이터 주소를 담는다.

 

잘 이해가 안 된다면, 이렇게 보자.

* 값 형식을 선언하면 값은 스택 메모리에 저장되고, 변수로 이 스택 메모리 위치를 찾아간다.

* 참조 형식을 선언하면 값은 힙 메모리에 저장되고, 변수는 스택 메모리에 저장되는데 이게 힙 메모리 주소를 가진다. 따라서 변수로 스택에서 주소를 찾고 이 주소로 힙에서 값을 찾는다.

 

나중에 그림을 추가하겠다.

728x90

'개발 > C#' 카테고리의 다른 글

as, is 연산자  (0) 2020.07.21
List - 리스트  (0) 2020.07.14
Stack and Heap  (0) 2020.07.13
? / ?? - C#의 물음표  (0) 2020.07.13
Delegate - 델리게이트  (0) 2020.07.11

댓글