mirror of
https://github.com/RustyCab/LearnRustEasy.git
synced 2026-02-04 02:33:24 +08:00
Update chapter_3_7.md
This commit is contained in:
@@ -139,6 +139,7 @@ fn main() {
|
||||
}
|
||||
```
|
||||
在第2行定义String类型时,并不能确定最终字符串的大小,所以字符串内容本身应该存储在堆上。结合什么String类型的本质的内容,可以得到String类型的存储如下:
|
||||
|
||||

|
||||
|
||||
String类型本身是三个字段(指针、长度、容量),在编译时是已知的大小,存储在栈上;String类型绑定的字符串(在上面代码中是“AB”)在编译时大小未知,是运行时在堆上分配内存,分配后的内存地址保存在String类型的指针字段中,内存大小保存在cap字段中,内存上存储的字符串长度保存在len字段中。
|
||||
@@ -170,6 +171,7 @@ fn main() {
|
||||
}
|
||||
```
|
||||
s是String类型,字符串“Hello world!”是存储在堆内存上的,其内存布局如下:
|
||||
|
||||

|
||||
|
||||
当执行let s1 = s后,内存布局如下:
|
||||
|
||||
Reference in New Issue
Block a user