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

前沿:

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值