【发布时间】:2017-12-18 04:12:48
【问题描述】:
我知道您可以使用 MemoryLayout<T>.size 来获取类型 T 的大小。
例如:MemoryLayout<Int32>.size // 4
但是,对于类实例(对象),MemoryLayout<T>.size 返回对对象的引用大小(在 64 位机器上为 8 个字节),而不是堆上实际对象的大小。
class ClassA { // Objects should be at least 8 bytes
let x: Int64 = 0
}
class ClassB {// Objects should be at least 16 bytes
let x: Int64 = 0
let y: Int64 = 0
}
MemoryLayout<ClassA>.size // 8
MemoryLayout<ClassB>.size // 8, as well :(
如何获取对象本身的大小?
对于那些想知道的人,我并不真正需要这个,我只是在探索 Swift 及其与 C 的互操作性。
【问题讨论】:
标签: swift heap-memory dynamic-allocation memory-layout