是否保证了尺寸(t [n])== n * sizeof(t)

Is it guaranteed that sizeof(T[N]) == N * sizeof(T)?

本文关键字:sizeof 是否      更新时间:2023-10-16

我一直假设T类型的N元素数组的大小,保证sizeof返回的元素恰好是n次sizeof(T)

对这个问题的评论使我怀疑。信誉良好的用户的索赔可能包含填充物,这将打破平等。当然,这样的平台可能不存在,但是允许它们吗?

如果允许,这将打破许多常见的习语,例如计算使用N * sizeof(T)的数组的所需存储,或使用sizeof(a)/sizeof(a[0])计算数组中的元素数。

是。 [expr.sizeof] 包括有关 sizeof的此位:

应用于数组时,结果是数组中的字节总数。这意味着 n 元素的数组的大小是 n 乘以元素的大小。

sizeof的全部要点是相关填充。数组的每个元素都是上一个元素之后的sizeof(T)字节。因此整个数组的大小为 N * sizeof(T)