gpt4 book ai didi

swift - 为什么 bool 占用 7 个字节的内存?

转载 作者:行者123 更新时间:2023-12-04 01:40:11 35 4
gpt4 key购买 nike

我正在使用 Xcode Playground 研究 Swift 内存布局,我创建了一个带有 bool、double 和 int32 的结构,如下所示。基于这种结构,MemoryLayout 的打印结果应该是 13,但它打印的是 20。任何想法为什么?也许我错过了一些东西。谢谢!

struct SampleStruct { //0
var bool: Bool = true //1
var double: Double = 1 //8
var int32: Int32 = 122 //4
}

MemoryLayout<SampleStruct>.size //Should print 13, but prints 20

最佳答案

Based on this structure, the print result of the MemoryLayout should be 13, but it's printing 20 instead. Any ideas why?



处理器通常喜欢将较大的类型与与其总线大小相匹配的边界对齐。结构中的那个 double 有 8 个字节长,如果它存储在 8 的倍数的地址处,那么您正在编译的 64 位处理器可以在一个操作中读取它,这就是编译器放置它的位置。

https://swiftunboxed.com/internals/size-stride-alignment/

关于swift - 为什么 bool 占用 7 个字节的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57823248/

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