首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否保证sizeof(T[N]) == N* sizeof(T)?

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

Stack Overflow用户
提问于 2017-09-28 06:48:36
回答 2查看 284关注 0票数 9

我一直假设sizeof返回的由N个T类型的元素组成的数组的大小可以保证恰好是sizeof(T)的N倍。

不过,comments on this question让我对此表示怀疑。有信誉的用户声称数组可能包含填充,这将破坏相等。当然,这样的平台可能不存在,但它们是允许的吗?

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

EN

回答 2

Stack Overflow用户

发布于 2017-09-28 06:53:58

是。expr.sizeof包含了关于sizeof的这部分内容

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

票数 11
EN

Stack Overflow用户

发布于 2017-09-28 06:52:36

sizeof的全部意义在于它包含了相关的填充。数组的每个元素都恰好是前一个元素后面的sizeof(T)字节。所以整个数组的大小是N * sizeof(T)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46458363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档