Open hanleylee opened 3 years ago
https://hanleylee.com/value-type-and-reference-type-of-swift.html
值类型和引用类型相比, 最大优势可以高效的使用内存, 值类型在栈上操作, 引用类型在堆上操作, 栈上操作仅仅是单个指针的移动, 而堆上操作牵涉到合并, 位移, 重链接, Swift 这样设计减少了堆上内存分配和回收次数, 使用 copy-on-write 将值传递与复制开销降到最低
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的地址在前两行分配后就是不同地址
https://hanleylee.com/value-type-and-reference-type-of-swift.html
值类型和引用类型相比, 最大优势可以高效的使用内存, 值类型在栈上操作, 引用类型在堆上操作, 栈上操作仅仅是单个指针的移动, 而堆上操作牵涉到合并, 位移, 重链接, Swift 这样设计减少了堆上内存分配和回收次数, 使用 copy-on-write 将值传递与复制开销降到最低