Swift-内存分析

318 阅读1分钟

1获取对象内存地址

在Swift中获取对象内存地址的方式与OC的不一样;Swift中不能在使用po 属性的方式,来获取对象内存。
查找后发现有两个方式可以获取对象内存:

  • withUnsafePointer(to: &T) {ptr in print(ptr)}
  • func printPointer<T>(ptr: UnsafePointer<T>) {print(ptr)}

2根据内存地址看内存分布

举个🌰:定义一个变量number

var number = 10
withUnsafePointer(to: &number) { ptr in
  print(ptr)
}

在代码末尾加个断点;此时控制台如图所示:

截屏2021-12-15 下午2.04.08.png

复制右边的内存地址;

第一种方法是:选中左边变量number,点击鼠标右键,出现如图所示内容:

截屏2021-12-15 下午2.04.23.png

选择View Memory of "number",然后在界面底下的Address中粘贴内存地址后回车;

截屏2021-12-15 下午2.07.56.png

因为Int占用的是8个字节,可以看到前8个字节中存储的内容为:0A 00 00 00 00 00 00 00
其中0A就是number的值;由于大小端存储规则,所以值0A在第一位。

第二种方法是:在Xcode菜单栏中找到Debug-Debug WorkFlow - View Memory,就出现了上述的界面。