size_t 에 관한 질문 드립니다
1058
작성한 질문수 24
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 자료형들이 구동되는 방식이 자세히 나와있습니다. 참고해주세요!
Export template 안됨
1
8
2
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
52
3
main 함수에서 왜 int만 선언이 되는걸까요
1
56
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
54
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
49
1
프로토타입과 함수간의 인자 불일치
1
73
2
12.12 헤더 관련 질문
1
60
2
Visual Studio Community 2026 사용 문의
1
137
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
60
2
getchar(), putchar()
1
93
3
강의자리ㅛ
1
79
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
112
2
소스파일안에 여러 파일
1
75
2
F5와 F7의 차이
1
76
2
c = TWO * (a+b); 에서 a와 b는?
1
58
2
; 세미콜론을 붙이는 기준에 문의
1
68
1
Step over 기능 문의
1
53
2
2.6 강의 따옴표 출력 규칙 문의
1
74
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
60
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
64
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
53
2





