docs: image url

This commit is contained in:
FantasticLBP
2026-01-02 10:28:57 +08:00
parent 7ac7513900
commit 7843661458
29 changed files with 719 additions and 719 deletions

View File

@@ -25,15 +25,15 @@ print("over")
- `var season: Season = Season.spring` 基础枚举默认值是0。
<img src="./../assets/EnumBaseMemoryLayoutDemo1.png" style="zoom:25%">
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/EnumBaseMemoryLayoutDemo1.png" style="zoom:25%">
- `season = Season.summer`此时可以看到第一个字节的位置是1.
<img src="./../assets/EnumBaseMemoryLayoutDemo2.png" style="zoom:25%">
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/EnumBaseMemoryLayoutDemo2.png" style="zoom:25%">
- `season = Season.antumn` 此时可以看到第一个字节的位置是2
<img src="./../assets/EnumBaseMemoryLayoutDemo3.png" style="zoom:25%">
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/EnumBaseMemoryLayoutDemo3.png" style="zoom:25%">
结论:查看内存信息,可以看到**不带关联值、不带原始值的基础枚举只占1个字节大小空间且值为默认值**
@@ -69,11 +69,11 @@ print("over")
- `var season: Season = Season.spring` 基础枚举变量默认值可以看到第一个字节的位置是0
<img src="./../assets/EnumWithRawValueMemoryLayoutDemo1.png" style="zoom:25%">
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/EnumWithRawValueMemoryLayoutDemo1.png" style="zoom:25%">
- `season = .winter` 基础枚举,当赋值为 winter 的时候可以看到第一个字节的位置是3
<img src="./../assets/EnumWithRawValueMemoryLayoutDemo2.png" style="zoom:25%">
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/EnumWithRawValueMemoryLayoutDemo2.png" style="zoom:25%">
结论:**只带有原始值的枚举同样只占用1个字节该字节的值为枚举的位置索引比如1、2而非原始值。原始值不占用枚举的内存**
@@ -107,7 +107,7 @@ print("over")
`.spring` 有3个 Int单个 Int 占8个字节空间所以红色框代表 spring 的1蓝色框代表 spring 的2绿色框代表 spring 的3黄色框代表枚举的第1个 case剩余7个字节为空。后续的7个字节是为了内存对齐而补齐的内存。
<img src="./../assets/AssociatedEnumMemoryLayoutDemo1.png" style="zoom:25%">
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/AssociatedEnumMemoryLayoutDemo1.png" style="zoom:25%">
其内存信息如下8字节为1组对应上图
@@ -133,7 +133,7 @@ print("over")
- `season = Season.summer(4, 5)` 带有关联值的枚举,`.summer` 这个枚举关联值有2个 Int单个 Int 占8个字节空间所以红色框代表 summer 第一个关联值 4蓝色框代表 summer 第二个关联值 5绿色框为空黄色框代表枚举的第2个 case剩余7个字节为空。
<img src="./../assets/AssociatedEnumMemoryLayoutDemo3.png" style="zoom:25%">
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/AssociatedEnumMemoryLayoutDemo3.png" style="zoom:25%">
其内存信息如下8字节为1组对应上图
@@ -147,7 +147,7 @@ print("over")
- `season = Season.antumn(6) 带有关联值的枚举,`. `antumn` 存在关联值 1个 Int单个 Int 占8个字节空间所以红色框代表 antumn 的6蓝色框为空绿色框为空黄色框代表枚举的第3个 case剩余7个字节为空。
<img src="./../assets/AssociatedEnumMemoryLayoutDemo4.png" style="zoom:25%">
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/AssociatedEnumMemoryLayoutDemo4.png" style="zoom:25%">
其内存信息如下8字节为1组对应上图
@@ -161,7 +161,7 @@ print("over")
- `season = Season.winter(true)` 带有关联值的枚举,`. `winter` 关联值是 1个 Bool单个 Bool 占1个字节空间所以红色框代表 winter 的 true蓝色框为空绿色框为空黄色框代表枚举的第4个 case剩余7个字节为空。
<img src="./../assets/AssociatedEnumMemoryLayoutDemo5.png" style="zoom:25%">
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/AssociatedEnumMemoryLayoutDemo5.png" style="zoom:25%">
其内存信息如下8字节为1组对应上图
@@ -175,7 +175,7 @@ print("over")
- `season = Season.unknown` 带有关联值的枚举,`unknown` 没有关联值所以红色框为空蓝色框为空绿色框为空黄色框代表枚举的第5个 case剩余7个字节为空。
<img src="./../assets/AssociatedEnumMemoryLayoutDemo6.png" style="zoom:25%">
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/AssociatedEnumMemoryLayoutDemo6.png" style="zoom:25%">
其内存信息如下8字节为1组对应上图
@@ -299,7 +299,7 @@ case1 占用8个字节case2 占用1个字节能用 case1 的8个字节的
更改验证标签对于枚举占用内存大小的影响
<img src="./../assets/SwiftEnumCaseNumAffectMemory.png" style="zoom:40%" />
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/SwiftEnumCaseNumAffectMemory.png" style="zoom:40%" />
可以看到 enum 只有1个 case 的时候内存大小只和最大关联值大小有关1个 case 的情况下不需要额外的空间来判断所属哪个 case。
@@ -329,7 +329,7 @@ print("over")
断点停到 `var season: Season = Season.spring(1, 2, 3)` 位置
<img src="./../assets/AssociatedEnumMemoryLayoutExplore.png" style="zoom:25%">
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/AssociatedEnumMemoryLayoutExplore.png" style="zoom:25%">
将断点处的汇编单独摘出来研究