我一直认为T
返回的N个元素数组的大小({1}}保证恰好是N sizeof
的N倍。
comments on this question让我对此表示怀疑。有信誉的用户声称数组可能包含填充,这会破坏相等性。当然这些平台可能不存在,但它们是否被允许?
如果允许,这会破坏许多常见习语,例如计算sizeof(T)
数组所需的存储空间,或使用N * sizeof(T)
计算数组中的元素数。
答案 0 :(得分:11)
是。 [expr.sizeof] 包含关于sizeof
:
应用于数组时,结果是数组中的总字节数。这意味着 n 元素数组的大小 n 乘以元素的大小。
答案 1 :(得分:2)
sizeof
的重点是它包含相关的填充。数组的每个元素在前一个元素之后都是sizeof(T)
个字节。因此整个数组的大小为N * sizeof(T)
。