Loading
0

en wikipedia org(struct的值应该是24才对啊)

就在你的引用文中, 有这样的描述“...usually the processor can fetch a word-aligned object faster than it can fetch an object that straddles multiple words in memory.[3] Therefore, compilers usually align data structures to at least a word alignment boundary...” 意思很明白了, 是按word对齐的, 文中举的例子: struct student{char grade; int age;};的sizeof()正是8; 结合你的例子, 多了一个double类型而已, 因此sizeof() = 8+8 = 16; 更多追问追答 追问

根据structure padding,应该是以最大位数来计算的,double最大,所以应该以double为基准来进行计算,应该是24才对啊

追答

请再仔细看看wiki链接上的描述,structure padding是按word字节来填充的, char填充为4字节,int本身4字节,double 8字节,因此是16; 而不是每个成员都按最大的填充。

追问

英文水平差了点,能帮忙详细解释一下一word吗?

追答

那段话(上面引述)的意思:
通常情况下,处理器访问按字对齐的(数据)对象比分散于内存中的数据要快。因此编译器一般都按字(word)对齐数据结构(并填充边界)。

再参考一下后面的那个例子,和上面的描述是吻合的~

 

声明:本文为原创,作者为 蓝心网,转载时请保留本声明及附带文章链接:https://www.lansin.com/99652.html

最后编辑于:2021/9/30作者: 蓝心网

蓝心网主要分享健康养生知识,包括心理健康知识、功效与作用查询、健康养生知识、生活小妙招、药品信息查询等为网友提供健康知识分享交流,欢迎您的加入!

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注