나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2024-04-07 14:04:27

size_t


프로그래밍 언어 문법
{{{#!wiki style="margin: -16px -11px; word-break: keep-all"<colbgcolor=#0095c7><colcolor=#fff,#000> 언어 문법 C(포인터) · C++(자료형 · 특성 · 클래스 · 이름공간 · 상수 표현식) · C# · Java · Python · Kotlin · MATLAB · SQL · PHP · JavaScript
마크업 문법 HTML · CSS
개념과 용어 함수 · 인라인 함수 · 고차 함수 · 람다식 · 리터럴 · size_t · 상속 · 예외 · 조건문 · 참조에 의한 호출 · eval
기타 == · === · NaN · null · undefined · 모나드 · 배커스-나우르 표기법
프로그래밍 언어 예제 · 목록 · 분류 }}}

1. 개요2. 설명3. ssize_t

1. 개요

C/C++ 에서 쓰이는 데이터 타입이다. C80/C90 표준에 정의되어 있다.

2. 설명

size_t는 해당 시스템에서 어떤 객체나 값이 포함할 수 있는 최대 크기의 데이터를 표현하는 타입으로 반드시 unsigned 형으로 나타낸다. stddef.h 및 cstddef 헤더에 정의되어 있다.

아래는 C99 원문.
size_t can store the maximum size of a theoretically possible object of any type
해당 명세에 따르면 x86은 32비트, x64는 64비트 변수가 된다.

C++에서는 stddef.h 대신 cstddef를 include하면 std::size_t로도 쓸 수 있으며 명세도 C와 동일하다.

표준이라는 점과는 별개로 이 자료형의 효용성에 의문을 갖는 프로그래머들이 꽤 많은데, 이유는 다음과 같다.
표준 라이브러리은 죄다 size_t로 고정되어 있기 때문에 어쩔 수 없이 컴파일 경고를 없애기 위해 써야 하는 경우도 꽤 있다.

size_t의 대체품을 찾는다면 쓸 수 있는 가장 좋은 것은 int, 필요하다면 unsigned int이며, C++11 이후로는 auto를 써 주면 개발 편의성도 잡고 컴파일 경고까지 쉽게 없애줄 수 있다. auto가 지원이 안 된다면 static_cast<int>(value) [1], (int)value [2]들을 활용하면 강제로 size_t의 문제점에서 벗어날 수 있다.

3. ssize_t

size_t의 부호형이며 목적은 비슷하다. 주로 저수준 파일 함수나 소켓 라이브러리에서 쓰이는데 이를 반환값으로 쓰이는 함수들은 에러가 발생했을때 0 이하의 값 또는 -1을 반환한다는 점이 다르다.
[1] C++ 스타일 변환[2] C 스타일 변환은 C++ 유저라면 쓰지 않는 것이 좋다. reinterpret_cast 처럼 위험하다.