【发布时间】:2019-07-06 20:58:57
【问题描述】:
在节点结构中,数据大小为 4 字节,节点* 大小为 8 字节,而节点大小为 16 字节。在 4+8=12 之后,节点的 4 个额外字节在哪里?
我对此一无所知。
struct node
{
int data;
struct node* next;
}s;
int main()
{
printf("node => %d \n",sizeof(s));
printf("node.data => %d \n",sizeof(s.data));
printf("node* => %d ",sizeof(s.next));
return 0;
}
/*OUTPUT-
node => 16
node.data => 4
node* => 8 */
【问题讨论】:
-
你看到有一个实际例子data structure alignment维基百科的文章就够了,
-
如果您正在寻找 C 中的解决方案,为什么这会被标记为 C# 和 C++?请仅使用相关标签。
-
查找“结构填充”以解释为什么结构的大小可以大于其成员大小的总和。此外,使用
%d打印sizeof运算符的结果会给出未定义的行为,因为%d指定了int,而sizeof不会给出int类型的结果。