gpt4 book ai didi

c++ - 为什么在 iOS 中结构对齐不同

转载 作者:行者123 更新时间:2023-11-28 05:53:26 26 4
gpt4 key购买 nike

我已将 Xcode 中的结构对齐方式设置为 8 字节打包。例如:

struct Info
{
unsigned short kindID;
char kindName[32];
int64_t gameMonery;
}__attribute__ ((aligned(8)));

该结构体大小为48字节,在iPhone5和iPhone 5S中,kindName地址偏移量为2字节,但在iPhone5中,gameMoney偏移量为36字节,在iPhone 5S gameMoney 偏移量为 40 字节。

为什么会有这个不同?

最佳答案

64 位类型(int64_t)的对齐方式在 32 位平台上为 4,在 64 位平台上为 8。

您可以通过在声明中添加 __attribute__((packed)) 让编译器抑制单个元素的对齐。未对齐成员的访问速度稍慢。

结构的大小在两个平台上没有差异的原因是大小受结构对齐方式的影响(指定为 8):

例子:

struct { char i; } __attribute__((aligned(8))) foo;
sizeof(foo) == 8;

关于c++ - 为什么在 iOS 中结构对齐不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34715726/

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