'C++' size_t

토스트·2024년 12월 8일
0

'C++' basic

목록 보기
2/35

size_t

크기나 수치를 표현하는 데 사용되는 데이터 타입으로, 주로 배열의 크기나 메모리 크기와 같은 크기 관련 값을 다룰 때 사용됩니다. size_t는 부호 없는 정수형(unsigned integer)으로, 매우 큰 값도 표현할 수 있고, 이식성이 높게 설계되어있습니다.

  • 32bit 시스템에서는 일반적으로 4byte를 사용하며,
    64bit 시스템에서는 일반적으로 8byte를 사용합니다.

의도 표현을 위해 사용

'크기', '용량' 또는 '길이'를 표현하기 위한 특별한 타입입니다.

예를 들어, 배열의 크기, 메모리 할당 크기, 파일 크기 등과 같은 값들을 다룰 때, size_t를 사용하면 크기와 관련된 값임을 명확하게 나타낼 수 있습니다. 이는 코드의 가독성을 높이고, 다른 사람들이 코드를 읽을 때 해당 값이 "크기"와 관련된 데이터임을 직관적으로 이해할 수 있게 해줍니다.

unsigned int VS size_t

unsigned int

#include <iostream>

using namespace std;

int main() {
	unsigned int value = -5;
    
    cout << "unsigned int value : " << value << endl;

	return 0;
}

결과값

unsigned int value : 4294967291

size_t

#include <iostream>
#include <cstddef> // size_t가 정의된 헤더

using namespace std;

int main() {
	size_t value = -5;

	cout << "size_t value : " << value << endl;

	return 0;
}

결과값

size_t value : 18446744073709551611

대부분의 C++ 컴파일러에서는 size_t와 같은 부호 없는 정수 타입에 음수를 할당할 때 암시적으로 자동 변환을 수행하여 위와 같은 값이 출력됩니다. 하지만 일부 컴파일러는 경고를 출력하거나 오류를 발생시킬 수 있습니다.

권장 사항

  • unsigned int와 size_t 모두 음수를 할당할 경우 의도하지 않은 값이 만들어질 수 있으니 가급적 양수값만을 다루는 것이 안전합니다.

  • 또한, 컴파일러에 따라 <cstddef> 헤더를 포함하지 않아도 컴파일러의 확장으로 인해 size_t를 사용할 수 있지만 컴파일러 간 호환성 문제와 이식성 보장을 위해 <cstddef>헤더를 포함하는 것을 권장합니다.

0개의 댓글