【发布时间】:2012-05-14 10:59:41
【问题描述】:
一旦添加额外的字节来引用这些额外的字节在执行时会发生什么。这些额外的字节是空的还是其中会包含什么数据?
对此有任何帮助。谢谢!!!
【问题讨论】:
-
什么是“空”字节?你的意思是像你的内存芯片上的一个洞?
一旦添加额外的字节来引用这些额外的字节在执行时会发生什么。这些额外的字节是空的还是其中会包含什么数据?
对此有任何帮助。谢谢!!!
【问题讨论】:
ISO 9899:2011 6.2.6.1/6
当一个值存储在结构或联合类型的对象中时, 包括在成员对象中,对象表示的字节 对应于任何填充字节的值采用未指定的值。
这是未指定的行为,这意味着编译器可以将任何值放在那里,包括垃圾,只要它对所有结构都一致。编译器不需要向用户记录它如何处理填充字节。
【讨论】:
它可以是任何东西。如果您使用calloc 分配了结构,那么它们最初将为零。但是后续操作可能会导致向它们写入垃圾。
【讨论】:
在结构中进行填充以对齐其成员。这是由编译器出于优化目的完成的,以便访问更快。 您不必担心结构中的间隙。继续并引用/取消引用您的结构的成员。 一篇很好的文章是http://www.geeksforgeeks.org/archives/9705
【讨论】: