Update ownership.md
@ -155,7 +155,7 @@ let s2 = s1;
实际上, `String` 类型是一个复杂类型,由**存储在栈中的堆指针**、**字符串长度**、**字符串容量**共同组成,其中**堆指针**是最重要的,它指向了真实存储字符串内容的堆内存,至于长度和容量,如果你有 Go 语言的经验,这里就很好理解:容量是堆内存分配空间的大小,长度是目前已经使用的大小。
总之 `String` 类型指向了一个堆上的空间,这里存储着它的真实数据, 下面对上面代码中的 `let s2 = s1` 分成两种情况讨论:
总之 `String` 类型指向了一个堆上的空间,这里存储着它的真实数据,下面对上面代码中的 `let s2 = s1` 分成两种情况讨论:
1. 拷贝 `String` 和存储在堆上的字节数组
如果该语句是拷贝所有数据(深拷贝),那么无论是 `String` 本身还是底层的堆上数据,都会被全部拷贝,这对于性能而言会造成非常大的影响