작성
·
943
0
size_t 가 시스템에 따라
32비트 : unsigned int 혹은
64비트 : unsigned long long
이 될 수 있다고 이해했습니다.
정확한 정의가 궁금하여 찾아보았더니,
'' 해당 시스템에서 어떤 객체, 값을 포함할 수 있는 최대 크기를 표현한다. ''
라고 하는데요.
이 정의가 맞나요?
이 정의가 맞다면, size_t가 unsigned int 를 반환하는 경우
해당 시스템의 자료형 최대 크기가 32비트인건지....
그렇다면 그 환경은 unsigned long long 이라는 자료형을 사용할 수가 없는 환경인건지.... 이해가 부족하여 질문드립니다.
답변 3
2
안녕하세요!
- 해당 정의 맞습니다.
- 32bit 시스템 환경이라도 double, long long, unsigned long long 과 같은 8byte (=64bit) 크기의 자료형 사용할 수 있습니다.
32bit 환경에서 출력한 결과입니다. (상단의 x86 확인하실 수 있습니다. ) 이렇게 32bit 환경에서도 8byte 자료형 사용하실 수 있고 크기도 8 로 잘 나온 것을 확인할 수 있습니다.
size_t 의 정의를 조금 더 구체화하자면 현 시스템이 "한번에" 처리할 수 있는 최대 크기를 의미합니다. 32bit 환경에서는 8byte 자료형들을 4byte(=32bit) 크기의 레지스터를 2 개 이용해서 표현하는 등등 이런 방식으로 8byte 자료형을 표현한다고 합니다.
아래 링크에 32bit 시스템에서 8byte 자료형들이 구동되는 방식이 자세히 나와있습니다. 참고해주세요!
0
0