前沿:
swift语言在设计之初是与C语言的API进行了无缝的对接混用,但是在语法上具有很大的差异,swift在默认情况下是内存安全的,这也意味着我们在swift中是禁止使用内存操作的,但是swift并没有对内存的使用进行禁止,因此swift存在了一个特殊的数据类型unsafe
Memory Layout类
MemoryLayout是一个数据结构,用于保存类的内存配置,其组成如下
struct MemoryLayout {
var size: Int { get } // 连续的内存占用量T,以字节为单位。
var stride: Int { get } // 存储在连续存储器或存储器中的一个实例的开始到下一个实例的开始的字节数
var alignment: Int { get } //默认内存对齐方式T,以字节为单位。
func size(ofValue value: T) -> Int
func stride(ofValue value: T) -> Int
func alignment(ofValue value: T) -> Int
}
例如:一个结构体解释MemoryLayout的使用
/*结构体声明*/
struct Point {
let x: Double
let y: Double
let isFilled: Bool
}
/*MemoryLayout的类方法*/
print("Point.size:\(MemoryLayout<Point>.size)")
print("Point.stride:\(MemoryLayout<Poi