我因使用uint
代替size_t
而受到很多批评,但每次检查我正在使用的工具链时,结果size_t
被定义为{ {1}}。
是否存在uint
实际上不是size_t
的编译器实现?批评的理由是什么?
答案 0 :(得分:6)
size_t
是“匹配您可以在机器中使用的最大可能地址范围的大小”(或某些词语大致相同的效果)。
特别是,size_t
在64位机器上是64位,在32位系统上是32位。
我假设uint
缺少unsigned int
,这通常是32位(现在,一些较旧的系统将使用16位整数)。因此,在64位系统上,unsigned int
仍然是32位,尽管内存分配,字符串等的大小可能大于32位 - 如果您尝试使用{{1},这会导致问题为了大小。