1

我一直因为使用uint而不是.size_tsize_tuint

是否有任何编译器实现size_t实际上不是 a uint?这种批评的依据是什么?

4

1 回答 1

6

size_t是“与您可以在机器中使用的最大可能地址范围相匹配的大小”(或大致具有这种效果的一些词)。

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

我假设uint缺少unsigned int,这几乎是普遍的 32 位(这些天,一些较旧的系统将使用 16 位整数)。因此,在 64 位系统上,anunsigned int仍然是 32 位,尽管内存分配、字符串等的大小可能大于 32 位 - 如果您尝试使用uint该大小,则会出现问题。

于 2013-06-11T09:49:05.630 回答