Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ sizeof 연산자란? 개념부터 활용법까지 총정리

sizeof는 C++의 키워드이면서 동시에 컴파일 타임(compile-time) 연산자로, 변수나 데이터 타입이 차지하는 메모리 크기를 바이트 단위로 계산합니다. 클래스(class), 구조체(structure), 공용체(union)를 비롯해 사용자가 직접 정의한 데이터 타입까지 모든 타입의 크기를 확인할 수 있습니다.

sizeof 연산자의 기본 문법

sizeof (data type)

여기서 data type은 크기를 알고 싶은 대상 데이터 타입으로, 클래스, 구조체, 공용체 등 어떤 사용자 정의 타입도 올 수 있습니다.

sizeof 연산자의 주요 특징

  • char 타입에 적용할 경우: 항상 1을 반환합니다. C++ 표준에서 char의 크기를 1바이트로 정의하기 때문입니다.
  • 배열에 적용할 경우: 배열 전체의 총 바이트 수를 반환합니다. 배열 이름이 나타내는 포인터의 크기가 아니라, 배열이 실제로 차지하는 전체 메모리 크기라는 점에 유의해야 합니다.
  • 컴파일 타임에 평가됩니다: 프로그램 실행 중이 아니라 컴파일 시점에 크기가 결정되므로 런타임 오버헤드가 없습니다.

sizeof 연산자 사용 예제

C++에서 제공하는 기본(built-in) 데이터 타입들의 크기를 출력하는 예제를 살펴보겠습니다.

#include <iostream>
using namespace std;

int main() {
    cout << "Size of char : " << sizeof(char) << endl;
    cout << "Size of int : " << sizeof(int) << endl;
    cout << "Size of short int : " << sizeof(short int) << endl;
    cout << "Size of long int : " << sizeof(long int) << endl;
    cout << "Size of float : " << sizeof(float) << endl;
    cout << "Size of double : " << sizeof(double) << endl;
    cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Size of char : 1
Size of int : 4
Size of short int : 2
Size of long int : 4
Size of float : 4
Size of double : 8
Size of wchar_t : 4

정리

sizeof 연산자는 메모리 관리, 버퍼 크기 계산, 직렬화(serialization) 작업 등에서 필수적으로 사용되는 도구입니다. 단, 데이터 타입의 크기는 운영체제와 컴파일러 환경에 따라 달라질 수 있으므로, 이식성이 중요한 코드에서는 특정 크기를 가정하기보다 항상 sizeof로 실제 크기를 확인하는 것이 좋습니다.