是否保证sizeof(T [N])== N*sizeof(T)?

Bee*_*ope 8 c++ arrays sizeof language-lawyer

我一直假定类型的N个元件的阵列的大小T,如通过返回sizeof被保证是确切的N倍sizeof(T).

对这个问题评论让我对此表示怀疑.有信誉的用户声称数组可能包含填充,这会破坏相等性.当然这些平台可能不存在,但它们是否被允许?

如果允许,这将破坏许多常见的习惯用法,例如计算数组所需的存储空间N * sizeof(T),或使用计算数组中元素的数量sizeof(a)/sizeof(a[0]).

mel*_*ene 11

是.[expr.sizeof]包含以下内容sizeof:

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


Lil*_*ard 2

重点sizeof是它包含相关的填充。数组的每个元素恰好sizeof(T)位于前一个元素之后的字节。所以整个数组的大小是N * sizeof(T)