【发布时间】:2011-08-25 15:42:04
【问题描述】:
C 标准保证int 能够存储所有可能的数组大小。至少,这就是我通过阅读第 6.5.2.1 节第 1 小节(数组下标约束)所理解的:
其中一个表达式的类型应为“指向对象类型的指针”,另一个表达式应为 具有整数类型,结果具有“类型”类型。
既然我们要用ints 作为数组下标,为什么要使用size_t 来确定数组的大小呢?
当int 足够时,为什么strlen() 返回size_t?
【问题讨论】:
-
size_t 通常是无符号的。由于 -1 的字符串大小似乎有些无意义,那我为什么要支持它呢?
-
通常不会。它必须是无符号类型。一些错误的实现曾经签署了
size_t,这导致了极其严重的可利用漏洞。 -
还有
malloc以size_t作为参数。知道使用什么作为数组下标并非易事:stackoverflow.com/questions/3174850/type-for-array-index-in-c99