基础知识

指针的内存状态

typed? initiated?

之前分配的内存可能被释放,使得指针指向了未被分配的内存。
有两种方式可以使得指针指向的内存处于Uninitialized状态:

  1. 刚刚被分配内存
  2. 内存被deinitialized
var bytes: [UInt8] = [39, 77, 111, 111, 102, 33, 39, 0]
let uint8Pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: 8)

此时,uint8Pointer处于Uninitialized状态。

已经被初始化的内存,可以通过pointee属性或者下标方式访问。

let ptr: UnsafePointer<Int> = ...
// ptr.pointee == 23
// ptr[0] == 23

Typed Pointers

指向内存能否改动 可否进行边界检查
UnsafePointer
UnsafeMutablePointer
UnsafeBufferPointer
UnsafeMutableBufferPointer

Raw Pointers

即指向的内存没有特定类型。

Use raw pointers and buffers to access memory for loading and storing as raw bytes.

  • automated memory management ❌
  • type safety ❌
  • alignment guarantees ❌

指针类型转换

前提条件

Memory that has been bound to a type can be rebound to a different type only after it has been deinitialized or if the bound type is a trivial type

  • 内存已经被 deinitialized
  • 内存指向的类型是 trivial 的

deinitialized 的地址,有三种出路:

  1. 以相同类型被 reinitialized
  2. bound to a new type
  3. deallocated

typed pointer 状态转换

untrivial pointee

trivial pointee

相比之下,pointee 类型是 trivial 的,可以进行更多的操作。

最新文章

  1. Linux OpenVPN 服务端吊销(revoke)客户端证书
  2. 云虚拟主机开源 DedeCMS 安装指南
  3. XE7 提交 App(iOS 8)提示「does not contain the correct beta entitlement」问题修复
  4. python os.path模块常用方法详解:转:http://wangwei007.blog.51cto.com/68019/1104940
  5. a标签的妙用-拨打电话、发送短信、发送邮件
  6. JAVA if条件语句,switch多分支结构,与逻辑运算符
  7. 使用dynamic来简化反射实现
  8. UVA 10129 Play on Words
  9. python-邮件提醒功能
  10. Java多线程编程核心技术(三)多线程通信
  11. xdoj-1279(有趣的线段树--吉司机?!)
  12. leetcode 443. String Compression
  13. spring boot (三): 热部署
  14. Thymeleaf 学习笔记
  15. 【转】python基础-编码与解码
  16. springboot集成AOP管理日志
  17. 使用JavaScript修改浏览器URL地址栏的实现代码
  18. Python 词云 【中/英】小白简单入门教程
  19. struts-resultType属性
  20. Java基础之身份证验证

热门文章

  1. cmake find_package 中,include_directories,target_link_libraries 的值怎么知道?
  2. SSM商城项目(七)
  3. 史上最坑 idea 更改代码不生效
  4. 什么是PLI?
  5. Demo002 IDEA中Junit单元测试的使用(初级篇)
  6. 171. Excel Sheet Column Number (Math)
  7. 4412 uboot启动分析
  8. python基础之Day10
  9. Python:每日一题006
  10. WPF图片拖拉变形、合成