-
unsinged int와 size_t프로그래밍/c++ 2015. 3. 31. 14:55반응형
http://en.cppreference.com/w/c/types/size_t
size_t란?
size_t는 부호 없는 정수형(unsinged integer)으로 sizeof, alignof, offsetof의 반환 값입니다.
auto result = sizeof(very_very_big_object);
이론적으로 가능한 오브젝트의 최대 크기를 저장할 수 있는 타입이며 일반적으로, 배열 인덱싱 및 루프 계산에 사용됩니다.
이럴 때 쓴다!
size_t는 이론적으로 가능한 오브젝트의 최대 크기라고 한다.
malloc같은 C의 메모리 할당 함수를 보면 인자의 타입으로는 size_t를 사용하는데, int형, short형 같은 원초적 자료형들은 크기가 고정적이다. int는 4, short는 2로.
이런 고정적인 자료형은 시스템이 바뀌게 될 때에는 이 값은 무의미하게 될 여지가 있다.
예를 들어 32비트 시스템에서 16비트 시스템으로 옮겼다고 치자, 그러면 16비트의 시스템에선 32비트 시스템에서 할당 가능한 만큼의 동적 메모리 할당을 할 수 있을까? 택도 없다.
이런 상황을 위해 항상 같은 인터페이스를 유지하고자 이것은 사이즈를 위한 값이다! 라는걸 별도로 명해놓은 것이다.
typedef int size_t;
이런식으로 만약 16비트 시스템이라면 size_t는 이렇게 정의되어 있을것이다.
typedef short size_t;
반응형'프로그래밍 > c++' 카테고리의 다른 글
구글 C++ 스타일 가이드의 멤버 변수 네이밍 규칙을 따르지 않아야겠다고 생각한 이유 (3) 2015.05.23 c++ 코드 조각 가변 인자 템플릿을 이용한 벡터의 초기화 (0) 2015.04.15 배열의 최대 길이에 관하여 (0) 2015.03.31 우측값 참조로 받은 값은 우측값일까? (0) 2015.03.25 [c++14] shared_mutex와 shared_lock의 사용 (0) 2015.03.24