一、为什么需要所有权系统?

C/C 赋予程序员完全的内存控制权,这种自由伴随着悬垂指针、双重释放、内存泄漏和数据竞争的代价。垃圾回收器(GC)虽然解决了大部分内存安全问题,但以运行时开销和不可预测的停顿为代价。Rust的所有权系统在编译期解决了这些问题,实现了"零成本抽象"——没有运行时GC开销,同时保证内存安全和线程安全。

二、所有权三规则

Rust内存管理的核心是三条规则:1) 每一个值有且仅有一个所有者变量;2) 值在所有者离开作用域时被自动释放(调用Drop trait);3> 所有权可通过move或copy语义转移。理解move语义是一切的基础——let s2 = s1;之后s1不再有效,这避免了双重释放。

对于实现了Copy trait的类型(整数、浮点、布尔、字符以及仅包含Copy类型的元组),赋值操作执行按位复制,原变量仍然有效。这一设计让简单类型保持值语义的便利,同时让复杂类型(String、Vec等)享有move语义的安全保证。

三、借用与引用

频繁的所有权转移会降低代码可读性。Rust通过引用(

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部