看看这两个结构
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
是否会被优化,例如 chrA
和 chrB
?如果有,那叫什么?
对于这个例子,我假设 1 个单词 = 1 个短字符 = 2 个字符。
最佳答案
My question is will chr1 and chr2 be optomise such as chrA and chrB?
不,它们不会按照您描述的方式进行优化。
原因是sizeof(struct parent_t)
必须在程序中处处相同。
如果对其进行优化,此代码将失败:
struct parent_t p;
struct child_t c;
//... initialize p
memcpy(&c.parent, &p, sizeof(struct parent_t));
这样的代码是有效的并且必须工作。换句话说 - 您描述的优化不会发生。
关于c - 嵌套结构中的数据如何存储和填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40921445/