swift的MemoryLayout<T>
MemoryLayout<T>的3個(gè)屬性:
size:一個(gè) T 數(shù)據(jù)類型實(shí)例占用連續(xù)內(nèi)存字節(jié)的大小
stride: 從一個(gè)T開(kāi)始地址到下一個(gè)T開(kāi)始地址所占用的連續(xù)內(nèi)存字節(jié)的大小
alignment: T中property的內(nèi)存對(duì)齊大小
首先來(lái)看如下一個(gè)結(jié)構(gòu)體:
struct Person {
var age: Int64 = 0
var sex: UInt16 = 0
var address: Double = 0.0
var name: UInt8 = 0
}
對(duì)于一個(gè)class全部是8,因?yàn)閏lass是一個(gè)引用類型,本質(zhì)是一個(gè)指針
class People {
var age: Int64 = 0
var sex: UInt16 = 0
var address: Double = 0.0
var name: UInt8 = 0
}
MemoryLayout<People>.size //8
MemoryLayout<People>.alignment //8
MemoryLayout<People>.stride //8