当前位置:首页 > 内存 > 正文

结构体的内存怎么算

  • 内存
  • 2024-06-15 04:37:16
  • 3227

一、结构体的大小如何计算?答:由于存储变量地址对齐的问题,结构体大小计算必须满足三个原则:
这个结构体的大小很容易计算,只需要满足最后两个原则即可,分别是8个。
这个结构体的大小是12,为什么?仔细看最后两个原则要满足位移是member的整数倍,ch1的位移就为0,而i的位移不能为1,因为1不是i的大小的倍数,4。,所以i的位移量为4,ch2的偏移量为8,加上ch2为9。结构体的大小必须是成员大小的整数倍,即12。
这个结构体的大小是20。我们先看一下前两个成员。大小是8。毫无疑问,这个char类型必须被认为只有十个字符连接。,总和为18,结构体的大小是成员的整数倍,所以大小为20。
结构体内部的大小为8,所以结构体的大小需要调整为8?这个结构体的大小是20,显然不是8的倍数。因此,在计算结构体大小的时候,里面的结构体被认为是char和int,而不是整数。
结果:32
关联的大小是成员中最大类型的大小,因此该结构体的大小为12。
(1)Alignment值小于最大类型成员值
如果我们不指定对齐值,则结构体大小为24。我们指定对齐为4,所以大小为4的倍数,所以结构体大小为20。
(2)调整值大于最大类型成员值
我们指定的调整值为10,最大值是8。我们应该将其调整为10吗?否,当指定调整值大于自身调整值时,针对自身调整值,大小为24。
一般针对指定调整值与自身调整值中较小者调整。
(3)输入对齐方式为2
结果:
18
(4)
输出结果:
14
16
20
20