gpt4 book ai didi

c - 找到未对齐结构的正确尺寸

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:21 26 4
gpt4 key购买 nike

 typedef struct structA 
{
char C;
double D;
int I;
} structA_t;

此 structA_t 结构的大小:

sizeof(char) + 7 byte padding + sizeof(double) + sizeof(int) = 1 + 7 +8 + 4 = 20 bytes

但这是错误的,正确的是

24

.为什么?

最佳答案

在最后一个 ìnt 之后很可能有 4 个字节的填充。

如果 sizeof(double) == 8 那么您的平台上也可能有 alignof(double) == 8。考虑这种情况:

structA_t array[2];

如果大小仅为 20,则 array[1].D 将未对齐(地址可被 4 整除,而不是 8,这是需要对齐的)。

关于c - 找到未对齐结构的正确尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20238952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com