hanleylee / hanleylee.com-comments

网站评论仓库
https://hanleylee.com
2 stars 0 forks source link

Swift 的值类型, 引用类型, 内存管理 | 闪耀旅途 #40

Open hanleylee opened 3 years ago

hanleylee commented 3 years ago

https://hanleylee.com/value-type-and-reference-type-of-swift.html

值类型和引用类型相比, 最大优势可以高效的使用内存, 值类型在栈上操作, 引用类型在堆上操作, 栈上操作仅仅是单个指针的移动, 而堆上操作牵涉到合并, 位移, 重链接, Swift 这样设计减少了堆上内存分配和回收次数, 使用 copy-on-write 将值传递与复制开销降到最低

weartist commented 2 years ago

var a = [1, 2, 3] // a address: 0x001 var b = a // b address: 0x001

a.append(4)

a // a address: 0x002 b // b address: 0x001

// 注意: 最终是 a 的内存地址发生了变化; 如果没有 b 的话, 修改 a 的元素不会导致数组 a 的内存地址发生变化

a和b的地址在前两行分配后就是不同地址