当/ where /为什么size_t不是uint?

时间:2013-06-11 09:39:42

标签: c++ compiler-construction implementation size-t uint

我因使用uint代替size_t而受到很多批评,但每次检查我正在使用的工具链时,结果size_t被定义为{ {1}}。

是否存在uint实际上不是size_t的编译器实现?批评的理由是什么?

1 个答案:

答案 0 :(得分:6)

size_t是“匹配您可以在机器中使用的最大可能地址范围的大小”(或某些词语大致相同的效果)。

特别是,size_t在64位机器上是64位,在32位系统上是32位。

我假设uint缺少unsigned int,这通常是32位(现在,一些较旧的系统将使用16位整数)。因此,在64位系统上,unsigned int仍然是32位,尽管内存分配,字符串等的大小可能大于32位 - 如果您尝试使用{{1},这会导致问题为了大小。