怀疑结构填充

时间:2012-05-14 10:59:42

标签: c structure

添加额外字节后,用于引用执行时这些额外字节会发生什么。这些额外字节是空的还是包含哪些数据?

对此有任何帮助。感谢!!!

3 个答案:

答案 0 :(得分:4)

  

ISO 9899:2011 6.2.6.1/6

     

当值存储在结构或联合类型的对象中时,   包括在成员对象中,对象表示的字节   与任何填充字节对应的值都是未指定的值。

这是未指定的行为,这意味着编译器可以在其中放置任何值,包括垃圾,只要它对所有结构一致。编译器不需要向用户记录它如何处理填充字节。

答案 1 :(得分:3)

它可能是任何东西。如果您使用calloc分配了结构,那么它们最初将为零。但随后的操作可能会导致垃圾写入。

答案 2 :(得分:1)

填充是在结构中完成的,用于对齐其成员。这是由编译器完成的,以便进行优化,以便访问速度更快。 您无需担心结构中的差距。请继续推荐/取消参考您的结构成员。 一篇非常好的文章是http://www.geeksforgeeks.org/archives/9705