修改 README 文件

This commit is contained in:
2022-01-07 11:10:38 +08:00
parent 074193a7cb
commit b8472807aa

View File

@@ -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.dylibswift_slowAlloc
* libsystem_malloc.dylibmalloc
**在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.dylibswift_slowAlloc
> 4. libsystem_malloc.dylibmalloc