size_t的最大大小

我知道在C返回类型的sizeof运算符是size_t定义的无符号整数类型。 这意味着它的最大尺寸应为65535C99标准7.18.3所述 :

 limit of size_t SIZE_MAX 65535 

但是在gcc-4.8.2头文件中, stdint.h定义了它的大小远大于65535C99标准中规定的相反,如下所示,

 /* Limit of `size_t' type. */ # if __WORDSIZE == 64 # define SIZE_MAX (18446744073709551615UL) # else # define SIZE_MAX (4294967295U) # endif 

请帮助我理解为什么在我的误解背后存在差异或原因。

该标准规定SIZE_MAX必须至少为 65535。

它没有指定上限,gcc的实现完全有效。

引用你引用的参考文献(重点补充):

其实现定义值的大小(绝对值)应等于或大于下面给出的相应值,并使用相同的符号。

我会建议当前最大的(无符号)的演员阵容如下:

 #define SIZE_T_MAX size_t(0xffffffffffffffffULL) 

这应该为32位和64位编译提供相关结果。