修改 README 文件
This commit is contained in:
@@ -21,12 +21,12 @@ func test() {
|
||||
|
||||
test()方法在内存中的存储结构
|
||||
|
||||
<img src="https://vip1.loli.io/2022/01/06/5nON1A42PkVFijr.png" alt="jiulinxiri_20220106223910.png" style="zoom: 50%;" />
|
||||
<img src="https://vip1.loli.io/2022/01/06/5nON1A42PkVFijr.png" alt="jiulinxiri_20220106223910.png" style="zoom: 33%;" />
|
||||
|
||||
* point结构体是值类型,在内存中存储的是值
|
||||
* size类是引用类型,在内存中存储的是Size对象的内存地址
|
||||
|
||||
<img src="https://vip1.loli.io/2022/01/06/TRshqXCfrilFnQu.png" alt="jiulinxiri_20220106224431.png" style="zoom:50%;" />
|
||||
<img src="https://vip1.loli.io/2022/01/06/TRshqXCfrilFnQu.png" alt="jiulinxiri_20220106224431.png" style="zoom: 33%;" />
|
||||
|
||||
* 前边16个字节存储的是指向类型信息以及引用计数
|
||||
* 后边的16个字节存储的是成员变量
|
||||
@@ -50,7 +50,7 @@ var p2 = p1
|
||||
|
||||
栈空间的存储结构如下所示
|
||||
|
||||
<img src="https://vip2.loli.io/2022/01/07/yqFHwWRzdZXLnOa.png" alt="jiulinxiri_20220107093427" style="zoom:50%;" />
|
||||
<img src="https://vip2.loli.io/2022/01/07/yqFHwWRzdZXLnOa.png" alt="jiulinxiri_20220107093427" style="zoom: 33%;" />
|
||||
|
||||
> p1和p2成员变量之间的赋值操作没有任何影响
|
||||
|
||||
@@ -94,7 +94,7 @@ func test() {
|
||||
|
||||
内存中的存储结构如下图所示
|
||||
|
||||
<img src="https://vip2.loli.io/2022/01/07/WuKTbg8Zn5NvFip.png" alt="jiulinxiri_20220107102828" style="zoom:50%;" />
|
||||
<img src="https://vip2.loli.io/2022/01/07/WuKTbg8Zn5NvFip.png" alt="jiulinxiri_20220107102828" style="zoom: 33%;" />
|
||||
|
||||
|
||||
|
||||
@@ -115,31 +115,28 @@ s1 = Size(width: 11, height: 22)
|
||||
|
||||
内存中的结构如下图所示
|
||||
|
||||
<img src="https://vip1.loli.io/2022/01/07/CDTPEudHcjVbnLM.png" alt="jiulinxiri_20220107104836" style="zoom:50%;" />
|
||||
<img src="https://vip1.loli.io/2022/01/07/CDTPEudHcjVbnLM.png" alt="jiulinxiri_20220107104836" style="zoom: 33%;" />
|
||||
|
||||
|
||||
|
||||
#### 对象堆空间申请过程
|
||||
|
||||
在Swift中,创建类的实例对象,要向堆空间申请内存,大概流程如下
|
||||
|
||||
* Class.__allocating_init()_
|
||||
* libswiftCore.dylib:_swift_allocObject_
|
||||
* libswiftCore.dylib:swift_slowAlloc
|
||||
* libsystem_malloc.dylib:malloc
|
||||
|
||||
**在Mac、iOS中的malloc函数分配的内存大小总是16的倍数**
|
||||
通过 `class_getInstanceSize` 可以得知:类的对象至少需要占用多少内存
|
||||
|
||||
```swift
|
||||
class Point { var x = 11
|
||||
var test = true
|
||||
var y = 22
|
||||
}
|
||||
var p = Point() class_getInstanceSize(type(of: p)) // 40
|
||||
class_getInstanceSize(Point.self) // 40
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
> 对象的堆空间申请过程
|
||||
>
|
||||
> 在Swift中,创建类的实例对象,要向堆空间申请内存,大概流程如下
|
||||
>
|
||||
> 1. Class.__allocating_init()_
|
||||
> 2. libswiftCore.dylib:_swift_allocObject_
|
||||
> 3. libswiftCore.dylib:swift_slowAlloc
|
||||
> 4. libsystem_malloc.dylib:malloc
|
||||
|
Reference in New Issue
Block a user