4.C

Size_t 형은 뭘까?

yoons.Dev 2022. 9. 16. 15:32

함수들의 메뉴얼을 보다보면 매개변수의 형식이 size_t 인 경우가 있다.

그래서 size_t라는 형이 있는지 확인이 필요했고, 무엇을 의미하는지, 왜 쓰는지에 대해 알고싶었다.

실제 vs2017 에서 size_t형에 대한 설명

사진을 보면 size_t 형은 결국 typedef unsigned int 형식이다. 다시말해 unsigned int형을 typedef로 선언한 별칭이다.

근데 그러면 unsigned int로 쓴다는 건 부호가 없는 정수형식이라는 것을 길기때문에 size_t 형식으로 나타낸걸로 생각하면 되나?

아니다.

size_t형식은 먼저 int나 unsigned int와 같이 운영체제의 비트에 따라 크기가 달라진다. x86(32비트)운영체제에서는 부호없는 32비트 정수(4byte)가 될 것이고 x64(64비트)운영체제에서는 부호없는 64비트의 정수(8byte)가 될 것이다. 

 

그런데 unsigned int 와 int 는 64비트 OS라고해서 꼭 64비트의 정수가 되는게 아니다. 여전히 32비트일수도 있다. 그래서 size_t로 각 운영체제에 맞게 정수형식을 고정시키기 위해 size_t 형식을 쓰는것이다.

즉, 운영체제에 따라 변수의 메모리할당공간이 달라지는 것을 고정시키기 위한 형식이라는게 더욱 큰 이유가 될 것이다.