본문 바로가기
C#

값 형식과 참조 형식

by JAESEONG LEE- developer 2022. 7. 15.

값 형식(Value Types)은 변수가 값을 담는 데이터 형식을 말하고

 

참조 형식(Reference Types)은 변수가 값 대신 값이 있는 곳의 위치(참조)를 담는 데이터 형식을 말합니다.

 

메모리 영역에는 스택(Stack)과 힙(Heap)이 있는데 값 형식과 관련이 있는 것은 스택 메모리 영역, 참조 형식과 관련이 있는 것은 힙 메모리 영역입니다.

 

스택 형식은 

{ // 코드 블록 시작

         int a = 100;

         int b = 200;

         int c = 300;

} // 코드 블록 끝

 

으로 끝이 난다면 코드 블록 안에서 생성된 모든 값 형식의 변수들은 프로그램 실행이 중괄호 "}"를 만나면 메모리에서 제거됩니다.

 

참조 형식은 프로그래머가 원한다면 데이터를 살릴 수 있는 또 다른 메모리 영역을 CLR이 제공하는 것입니다. 그렇기 때문에 프로그래머가 힙에 데이터를 올려 놓으면, 코드 블록이 종료되는 지점과는 상관없이 그 데이터는 계속 생명을 유지합니다. 

 

참조 형식의 변수는 힙과 스택을 함께 이용하는데, 힙 영역에는 데이터를 저장하고 스택 영역에는 데이터가 저장되어 있는 힙 메모리의 주소를 저장합니다.

 

{
    object a = 10;
    object b = 10;  
}

 

이 코드는 CLR이 위 코드를 실행하면 다음 그림과 같이 실제 값 10과 20은 힙에 저장하고, a와 b는 값이 저장된 힙의 주소만 스택에 저장해둡니다.

'C#' 카테고리의 다른 글

정수 형식 예제 프로그램  (0) 2022.07.15
정수 계열 형식  (0) 2022.07.15
Chapter2 연습문제  (0) 2022.07.15
namespace BrainCSharp {} 이해하기  (0) 2022.07.15
using System; 의 대한 이해  (0) 2022.07.15