C# sizeof 연산자란 무엇인가?
C#의 sizeof 연산자는 특정 데이터 타입이 메모리에서 차지하는 크기를 바이트(byte) 단위로 반환합니다. 메모리 사용량을 최적화하거나 파일 입출력, 네트워크 전송, 저수준(low-level) 프로그래밍을 수행할 때 데이터의 실제 크기를 알아야 하는 경우에 매우 유용합니다.
예를 들어 int 타입의 크기를 구하려면 다음과 같이 작성합니다.
sizeof(int);
double 타입이라면 아래와 같습니다.
sizeof(double);
다양한 데이터 타입의 크기 확인 예제
다음은 long과 double 타입의 크기를 출력하는 전체 예제 코드입니다.
예제 코드
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
Console.WriteLine("long의 크기는 {0}바이트입니다.", sizeof(long));
Console.WriteLine("double의 크기는 {0}바이트입니다.", sizeof(double));
Console.ReadLine();
}
}
}실행 결과
long의 크기는 8바이트입니다. double의 크기는 8바이트입니다.
주요 기본 데이터 타입별 크기
sizeof 연산자로 확인할 수 있는 주요 기본 타입들의 크기는 다음과 같습니다.
| 데이터 타입 | 크기(바이트) |
|---|---|
| sbyte / byte / bool | 1 |
| short / ushort / char | 2 |
| int / uint / float | 4 |
| long / ulong / double | 8 |
| decimal | 16 |
sizeof 사용 시 주의사항
- sizeof는 비관리형(unmanaged) 타입에만 사용할 수 있으며, string이나 클래스 같은 참조 타입에는 적용할 수 없습니다.
- int, double처럼 크기가 고정된 기본 타입은 별도 설정 없이 안전한(safe) 컨텍스트에서 바로 사용할 수 있습니다.
- 직접 정의한 구조체(struct)의 크기를 구하려면 unsafe 컨텍스트가 필요하며, 프로젝트 속성에서 '비안전 코드 허용' 옵션을 활성화해야 합니다.
- 환경이나 플랫폼에 따라 결과가 달라질 수 있으므로, 이식성이 중요한 코드에서는 신중하게 사용해야 합니다.
마무리
sizeof 연산자는 문법이 간단하지만 메모리 구조를 이해하고 효율적인 코드를 작성하는 데 큰 도움이 되는 기본 도구입니다. 특히 구조체 패딩(padding), 데이터 직렬화(serialization), 네이티브 코드 연동 등을 다룰 때 그 진가를 발휘합니다.