gpt4 book ai didi

arrays - Swift 中 MemoryLayout.size 中数组的大小

转载 作者:行者123 更新时间:2023-12-01 15:22:02 24 4
gpt4 key购买 nike

抱歉,如果问题可能重复,我既无法在此处找到,也无法使用 Google。

我是 unsafe Swift 的新手,我想知道为什么 Bools 数组的大小(例如 10 个字节)仍然是 8 个字节?

如果我不能说出我的意思,我会想知道你是否可以看看这段代码:

var boolArray = [Bool]()
for _ in 1...10{
boolArray.append(true)
}
print(MemoryLayout.size(ofValue: boolArray))

我不明白为什么它打印 8 而数组有 10 个至少包含 10 个字节的 bool。

最佳答案

那是因为 Array本身并不真正存储任何东西——在内部,它们持有对堆分配内存的引用,它真正存储数据。

这样做的原因之一是优化 - 它允许使用写时复制机制。 Arraystruct ,因此它是一种值类型。但是,它持有的数据不需要每次复制Array时都复制。 - 相反,多个 Arrays可以指向同一个内存区域,只要不修改它。

关于arrays - Swift 中 MemoryLayout.size 中数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60417000/

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