我一直假设sizeof返回的由N个T类型的元素组成的数组的大小可以保证恰好是sizeof(T)的N倍。
不过,comments on this question让我对此表示怀疑。有信誉的用户声称数组可能包含填充,这将破坏相等。当然,这样的平台可能不存在,但它们是允许的吗?
如果允许,这将打破许多常见的习惯用法,例如使用N * sizeof(T)计算数组所需的存储空间,或者使用sizeof(a)/sizeof(a[0])计算数组中元素的数量。
发布于 2017-09-28 06:53:58
是。expr.sizeof包含了关于sizeof的这部分内容
当应用于数组时,结果是数组中的总字节数。这意味着由n个元素组成的数组的大小是元素大小的n倍。
发布于 2017-09-28 06:52:36
sizeof的全部意义在于它包含了相关的填充。数组的每个元素都恰好是前一个元素后面的sizeof(T)字节。所以整个数组的大小是N * sizeof(T)。
https://stackoverflow.com/questions/46458363
复制相似问题