看看这两个结构嵌套结构中的数据如何存储和填充?
struct parent_t
{
short num1;
char chrA;
char chrB;
char chr1;
};
struct child_t
{
struct parent_t parent;
char chr2;
};
正如我们所知,填充可能加入到结构成员,以便将其提高到一个舒适的RAM友好的大小。在parent_t
的情况下,chr1
可能会填充因为它的微不足道。虽然chrA
和chrB
可能会合并,并在RAM中共享相同的单词。
现在,如果我们看看child_t
,它有chr2
,它本身会被填充。我的问题是chr1
和chr2
是optomise如chrA
和chrB
?如果是这样,那叫什么?
对于这个例子,我假设1字= 1短= 2个字符。
我怀疑你的问题的答案是编译器特定的。不同的编译器可能会以不同的方式进行填充和对齐。你可以尝试转储内存(使用地址和sizeof())并检查。 – eyalm
http://stackoverflow.com/questions/4306186/structure-padding-and-packing – John
实际上,你会使用'offsetof'宏(这在所有环境中都不是标准的,但它足够简单以查找/实现)。是的,这绝对会根据您使用的编译器进行更改。 – John