【发布时间】:2014-12-07 23:57:23
【问题描述】:
根据第 135 页 K&R(以及 this 维基百科页面),sizeof 运算符可用于计算对象的大小,并以 size_t 类型的无符号整数形式返回以字节为单位的大小。由于无符号整数的最大值是 2^32,如果我要对字节大小大于 2^32 的对象调用 sizeof 会发生什么,比如大小为 2^34 字节的对象。 sizeof 会返回什么?有没有办法绕过这个大小限制?
【问题讨论】:
-
请注意,无符号整数的最大值不限于
2^32。但是你必须问问自己,这么大的对象如何在一个虚拟内存地址空间有限的系统中使用。 -
你的 C 编译器是否支持 64 位编译,如果支持,那么你的
size_t定义将支持大于 2^32。 -
没有任何有效的方法来创建大于 size_t 的对象 - 这很容易解决您的问题。 (虽然,“无符号整数”与“无符号整数”不同。例如,“无符号短”和“无符号长长”也是“无符号整数”)
-
@nos
size_t的唯一要求是不小于 65535。 -
@icepack 为什么size_t的唯一要求是不小于65535?