研究 Rust 内存安全的机制

Rust语言凭借其独特的内存管理方式备受关注。它通过自动释放超出作用域的变量和所有权机制,有效防止内存泄漏和多变量重复释放问题,同时在编译期即可检查空指针,提升了程序的安全性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Rust 这几年大受追捧,其性能和内存安全是其核心特点。初步研究了一下,Rust 区别与其他高级语言的重要特征,在于其内存管理的两个特点:

(1)变量超出作用域会自动释放。对于简单值类型的栈内存(如int,struct)超出作用域后自动释放,这个操作在各个语言都有实现。而对于 new 出来的堆内存,在c/c++中是要手动释放或用智能指针去释放的,而在java和dotnet中要委托垃圾回收释放或手动写 dispose 语句释放。而垃圾回收不是实时的,会影响性能,而释放语句总会有懒人忘记写的。而 Rust 对栈内存和堆内存一视同仁,超出作用域一律自动马上释放。Rust 的这个特点在兼顾性能的情况下、有效的减少了代码量和内存泄漏隐患。

{
    let s = String::from("hello");
    // 这里是变量 s 的可用范围
}
// 变量范围已经结束,变量 s 无效

 

(2) “所有权” :某段内存只能被最后的变量名所有,前面声明过的变量都作废,这有效的避免被多个变量重复释放的问题,而且该操作是在编译期就可以检查到的,这策略可在编译期就能有效的避免空指针问题,也可以减少一堆的null值判断语句。

 

let s1 = String::from("hello");  // 创建了一个字符串,其所有权是 s1
let s2 = s1;                     // 字符串的所有权移交给 s2
println!("{}, world!", s1);      // 错误!s1 已经失效

参考
Rust 所有权及作用域:https://www.runoob.com/rust/rust-ownership.html

这是个人的研究观点,欢迎讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土豆湿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值