sizeof 연산자 - 지정된 형식에 대한 메모리 요구 사항 결정

sizeof 연산자는 지정된 형식의 변수에서 사용하는 바이트 수를 반환합니다. sizeof 연산자의 인수는 비관리형 형식 또는 비관리형 형식이 되기 위해 제한된 형식 매개 변수의 이름이어야 합니다.

sizeof 연산자에 안전하지 않은 컨텍스트가 필요합니다. 그러나 아래 표의 식은 컴파일 시간에 해당 상수 값으로 계산되며 안전하지 않은 컨텍스트가 필요하지 않습니다.

상수 값
sizeof(sbyte) 1
sizeof(byte) 6
sizeof(short) 2
sizeof(ushort) 2
sizeof(int) 4
sizeof(uint) 4
sizeof(long) 8
sizeof(ulong) 8
sizeof(char) 2
sizeof(float) 4
sizeof(double) 8
sizeof(decimal) 16
sizeof(bool) 1

sizeof 연산자의 피연산자가 열거형 형식의 이름인 경우에도 안전하지 않은 컨텍스트를 사용할 필요가 없습니다.

다음 예제에서는 sizeof 연산자의 사용법을 보여 줍니다.

public struct Point
{
    public Point(byte tag, double x, double y) => (Tag, X, Y) = (tag, x, y);

    public byte Tag { get; }
    public double X { get; }
    public double Y { get; }
}

public class SizeOfOperator
{
    public static void Main()
    {
        Console.WriteLine(sizeof(byte));  // output: 1
        Console.WriteLine(sizeof(double));  // output: 8

        DisplaySizeOf<Point>();  // output: Size of Point is 24
        DisplaySizeOf<decimal>();  // output: Size of System.Decimal is 16

        unsafe
        {
            Console.WriteLine(sizeof(Point*));  // output: 8
        }
    }

    static unsafe void DisplaySizeOf<T>() where T : unmanaged
    {
        Console.WriteLine($"Size of {typeof(T)} is {sizeof(T)}");
    }
}

sizeof 연산자는 관리되는 메모리의 공용 언어 런타임에서 할당하는 바이트 수를 반환합니다. 구조체 형식의 경우 앞의 예제에서 보여 주는 것처럼 해당 값에 안쪽 여백이 포함됩니다. sizeof 연산자의 결과는 ‘관리되지 않는’ 메모리의 형식 크기를 반환하는 Marshal.SizeOf 메서드의 결과와 다를 수 있습니다.

C# 언어 사양

자세한 내용은 C# 언어 사양sizeof 연산자 섹션을 참조하세요.

참고 항목