Rust
Howard Yin 2021-10-27 08:13:00 编程语言Rust
Rust 区别与其他高级语言的重要特征,在于其内存管理的两个特点:
(1)变量超出作用域会自动释放。对于简单值类型的栈内存(如int,struct)超出作用域后自动释放,这个逻辑在各个语言都有实现。而对于 new 出来的堆内存,在c/c++中是要手动释放的,在java和dotnet中要委托垃圾回收释放或手动写 dispose 语句释放。而垃圾回收不是实时的,会影响性能。而释放语句总会有懒人忘记写的。而 Rust 对栈内存和堆内存一视同仁,超出作用域一律自动释放。Rust 的这个特点在兼顾性能的情况下、有效的减少了代码量和内存泄漏隐患。
(2) “所有权” :某段内存只能被最后的变量名所有,前面声明过的变量都作废,这有效的避免被多个变量释放的问题,而且该操作是在编译期就可以检查到的,这策略可在编译期就能有效的避免空指针问题。
这部分对于所有权的设定,看起来很奇怪,其实本质上就是在语言层面禁止了同一个可变数据会有多个变量引用的情况,一旦作为参数传递了,就会发生所有权的移动(Move)或借用(Borrow)。赋值给另一个变更也就自动放弃了所有权。从根本上杜绝了并发情景下的数据共享冲突。