728x90
SMALL
C# 에서 데이터를 메모리에 어떻게 저장할까?
- C#에서는 값형식(value type)과 참조형식(reference type) 두 가지 유형의 데이터 형식을 사용한다.
이 두 유형은 메모리에서 데이터를 저장하고 다루는 방식에 차이가 있다.
값 형식: 값형식은 변수가 실제 값을 보유한다. 변수에 할당된 값 자체가 스택에 할당된다.
[값 형식의 데이터 타입]
1. 숫자 데이터 유형 (int, float, double, decimal 등)
2. 논리형 (bool)
3. 문자 (char)
4. 구조체 (struct)
값형식 변수는 스택(stack) 메모리에 저장된다. 스택 메모리는 일반적으로 고정된 크기를 가지며, 변수가 생성 및 소멸할 때 사용된다.
참조 형식: 변수가 값 대신 실제 데이터가 저장된 위치(주소)를 참조 변수는 해당 데이터의 위치(주소)를 가리킨다. 참조 형식의 인스턴스는 힙에 할당
[참조형식의 데이터 타입]
1. 클래스 (class)
2. 배열 (array)
3. 인터페이스 (interface)
4. 대리자 (delegate)
참조형식 변수는 힙 메모리에 저장된 데이터의 위치를 가리키는 포인터와 같은 역할을 한다.
값형식과 참조형식의 차이점
값 형식 | 참조 형식 | |
메모리할당 | 값형식은 스택에 직접 값을 저장하므로 데 이터에 더 빠르게 액세스할 수 있다. |
힙에 데이터가 저장되며, 변수는 데이터의 주소를 가 리키므로 간접적인 액세스가 필요 |
복사 동작 | 변수를 다른 변수에 할당하면 해당 값이 복사된다. |
변수를 다른 변수에 할당하면 동일한 데이터 위치를 참조하게 된다. |
메모리 관리 | 스택에서 관리되므로 변수가 범위를 벗어 나면 자동으로 메모리에서 해제 |
힙에서 관 가비지 컬렉터가 메모리 해제를 관리 |
널(Null) 값 | 변수는 기본적으로 널 값을 가질 수 없다. | 변수는 null로 초기화할 수 있다. |
위 차이점 예제 코드
값 형식
위에 적은 코드는 아래 그림과 같이 이루어진다.
결과 값
참조 형식
위에 적은 코드는 아래 그림과 같이 이루어진다.
결과 값
728x90
'C# 기초' 카테고리의 다른 글
[기초] - 객체지향 프로그래밍(OOP)이란? (2) | 2024.06.04 |
---|---|
[기초] - C# 접근제한자 : [private, public, protected..] (0) | 2024.05.18 |
[기초] - C# - 메서드 (0) | 2024.05.10 |
[기초] - 박싱과, 언박싱에 관하여 (0) | 2024.05.03 |
[기초] - C# 생성자와 소멸자 (0) | 2024.04.23 |