-
字符串字面值,在编译时就知道他的内容了,其文本内容直接被硬编码到最终的可执行文件里
- 速度快,高效,是因为其不可变性。
-
String类型,为了支持可变性,需要在heap上分配内存来保存编译时未知的文本内容
- 操作系统必须在运行时来请求内存,这步通过 String::from 来实现
-
当用完String之后,需要使用某种方式将内存返回给操作系统
- 这步,在拥有GC的语言中,GC会跟踪并处理不再使用的内存
- 没有GC的语言中,就需要我们去识别内存何时不再使用,并调用代码将它返回
- 如果没有做,就会内存浪费,如果提前做了,变量就会非法,必须一次分配,一次释放
-
rust采用了不同的方式,对于某个值来说,当拥有它的变量走出作用范围时,内存会立即自动的交还给操作系统。
-
当变量走出作用域的时候,rust会自动调用drop这个函数。