swift-指针类型Memory Layout的简介与使用

本文介绍了Swift中的MemoryLayout类,它用于描述类型在内存中的布局。文章通过实例展示了结构体和类在使用MemoryLayout时的区别,强调了类是对象类型而结构体是值类型,对class的MemoryLayout实际上是操作引用指针。
摘要由CSDN通过智能技术生成

前沿:

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值