gpt4 book ai didi

c - C 结构的数据对齐

转载 作者:太空狗 更新时间:2023-10-29 16:05:12 24 4
gpt4 key购买 nike

CS:APP 中存在以下结构中所有字段的字节偏移量的问题(3.45)。

struct {
int *a;
float b;
char c;
short d;
long e;
double f;
int g;
char *h;
} rec;

这是书中的答案,它给 c 一个三个字节的填充,d 一个两个字节的填充,g 一个四个字节填充。

field  size  offset
----- ---- ------
a 8 0
b 4 8
c 1 12
d 2 16
e 8 24
f 8 32
g 4 40
h 8 48

这是我的解决方案,它只给 c 一个字节的填充和 g 一个四字节的填充。

field  size  offset
----- ---- ------
a 8 0
b 4 8
c 1 12
d 2 14
e 8 16
f 8 24
g 4 32
h 8 40

那么,我的解决方案有什么问题?它似乎符合对齐规则(编辑*这里的“规则”只是我自己的一个简化概念总结,它不是完整的或通用的),所有对象的偏移量都是对象大小的倍数。

非常感谢任何解释。

最佳答案

答案取决于编译器、平台和编译选项。一些例子: enter image description here

https://godbolt.org/z/4tAzB_

这本书的作者恐怕不明白这个话题。

关于c - C 结构的数据对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56877547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com