I'm aware you can use MemoryLayout<T>.size
to get the size of a type T
.
For example: MemoryLayout<Int32>.size // 4
However, for class instances (objects), MemoryLayout<T>.size
returns the size of the reference to the object (8 bytes on 64 bit machines), not the size of the actual objects on the heap.
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 :(
How can I get the size of the objects themselves?
For those wondering, I have no real need for this, I'm just exploring around Swift and its interoperability with C.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…