小编Pro*_*MJM的帖子

包含两个指针的struct的大小

这个结构的大小是多少?(32位系统计算.不是64位.)

struct list_element
{
  short data;
  struct list_element* next;
  struct list_element* prev;
};
Run Code Online (Sandbox Code Playgroud)

我试过用这些公式计算大小:

  1. (sizeof(list_element*)+ sizeof(短))+((sizeof(list_element*)*2)

    • (4 + 2)+(4*2)= 6 + 8 = 14
  2. (sizeof(短))+(sizeof(list_element*)*2)

    • 2 +(4*2)= 2 + 8 = 10
  3. (sizeof(list_element*)+ sizeof(list_element*)+ sizeof(short))+(sizeof(list_element*)*2)

    • (4 + 4 + 2)+(4*2)= 10 + 8 = 18
  4. (sizeof(list_element*)+ sizeof(list_element*)+ sizeof(short))

    • (4 + 4 + 2)= 10

但是,他们没有返回正确的答案.你用什么公式来计算这个结构的大小?

更新:

我的老师说我们忽略了数据对齐...希望这不会让任何人失去太多,因为你使用了处理与代码和结构的数据对齐...

更新2 感谢您的帮助和数据对齐介绍.

答案是10没有数据对齐......不知道为什么我急于在C中使用数据对齐......这很有趣吗?

此外,数据对齐的答案是12.正如你们解释的那样,你必须对齐短路以匹配整数.因此,你有(2 +(2个额外字节))+ 4 + 4 = 12.

c size struct

4
推荐指数
1
解决办法
946
查看次数

标签 统计

c ×1

size ×1

struct ×1