Rust所有权

  • 字符串字面值,在编译时就知道他的内容了,其文本内容直接被硬编码到最终的可执行文件里

    • 速度快,高效,是因为其不可变性。
  • String类型,为了支持可变性,需要在heap上分配内存来保存编译时未知的文本内容

    • 操作系统必须在运行时来请求内存,这步通过 String::from 来实现
  • 当用完String之后,需要使用某种方式将内存返回给操作系统

    • 这步,在拥有GC的语言中,GC会跟踪并处理不再使用的内存
    • 没有GC的语言中,就需要我们去识别内存何时不再使用,并调用代码将它返回
    • 如果没有做,就会内存浪费,如果提前做了,变量就会非法,必须一次分配,一次释放
  • rust采用了不同的方式,对于某个值来说,当拥有它的变量走出作用范围时,内存会立即自动的交还给操作系统。

  • 当变量走出作用域的时候,rust会自动调用drop这个函数。