size_t는 unsigned_int와 동일합니다

그렇다면 굳이 size_t가 존재하는 이유가 무엇일까요?


 

size_t의 선언부를 보게되면 이렇게 되어있습니다

#ifdef _WIN64
    typedef unsigned __int64 size_t;
#else
    typedef unsigned int     size_t;
#endif

64비트일땐 64바이트, 32비트일땐 32바이트의 unsigned_int로 정의되어 있습니다.

환경에 따라서 size_t의 크기가 보장되지만

int는 64비트환경이더라도 64바이트를 보장받을 수 없습니다.

이것이 size_t와 unsigned int의 차이점입니다.

하지만 이것은 size_t의 사용목적을 제대로 알려주진 않습니다

 

size_t를 사용해야하는 가장 큰 이유는...

 

size_t는 메모리나 문자열등의 길이를 표현할 때 사용한다

 

메모리와 문자열은 0미만의 사이즈는 존재할 수 없습니다. 그런데 자신이 직접 컨테이너를 작성했는데 size_t를 사용하지 않고 int, short 등의 signed 자료형을 사용하고, 다른 컨테이너는 unsigned를 사용하게 되어 중구난방이 되면 어떤 문제를 가져올지 알 수 없습니다. 

그래서 특정상황에서 통일된 자료형을 사용하기 위해 size_t를 사용하고 있습니다.

이것이 size_t를 사용하는 중요한 이유라고 생각됩니다

 

자신이 size_t를 사용하지 않고 unsigned_int를 사용해서 컨테이너를 만들어도 자료형 때문에 문제가 생기진 않을겁니다. 다만, size_t를 사용하면 이것이 컨테이터의 메모리사이즈라는 의미를 '명확'하게 주기 때문에

코드 가독성을 더 높여줄 것이라고 기대합니다.

 

 

+ Recent posts