关于内存布局的说法对新手可能存在误导
Closed this issue · 2 comments
timothyqiu commented
不保证遵循某种顺序 和 保证(不)遵循某种顺序 还是有区别的。目前能够保证的似乎只有各个字段会各自对齐。
目前的行文给人的感觉是“布局一定会变成这样”,并且隐约告诉读者“大家可以通过类似这样做实验的方法来验证某种行为”。这恐怕是在重蹈谭浩强的覆辙。
zig-course/course/basic/advanced_type/struct.md
Lines 221 to 233 in 6e1a764
jinzhongjia commented
根据此issue,ziglang/zig#20265 ,已经解释了编译器会尝试进行额外的填充令其符合16比特对齐
该部分要论证的仅仅是packed struct在保证声明顺序且进行压缩的情况下,在结构体尾部仍会存在部分填充
并非说结构会变成这样子,并且要说明struct会由编译器进行重新组合来表明“zig 并不保证结构体字段的顺序和结构体大小,但保证它是 ABI 对齐的。”
当然此处的确存在让人误会的情况,进行一些额外说明大概会好些
jinzhongjia commented
发起了一个新的pr,可以看一下是否可以解决该issue