修改 README 文件
This commit is contained in:
@@ -21,12 +21,12 @@ func test() {
|
|||||||
|
|
||||||
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结构体是值类型,在内存中存储的是值
|
* point结构体是值类型,在内存中存储的是值
|
||||||
* size类是引用类型,在内存中存储的是Size对象的内存地址
|
* 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个字节存储的是指向类型信息以及引用计数
|
||||||
* 后边的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成员变量之间的赋值操作没有任何影响
|
> 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