第 4 章 所有权与移动
吉姆•布兰迪
谈及内存管理,我们希望编程语言能具备两个特点:
希望内存能在我们选定的时机及时释放,这使我们能控制程序的内存消耗;
在对象被释放后,我们绝不希望继续使用指向它的指针,这是未定义行为,会导致崩溃和安全漏洞。
但上述情景似乎难以兼顾:只要指向值的指针仍然存在,释放这个值就必然会让这些指针悬空。几乎所有主流编程语言都只能在两个阵营中“二选一”,这取决于它们从中放弃了哪一项。
“安全优先”阵营会通过垃圾回收机制来管理内存,在所有指向对象的可达指针都消失后,自动释放对象。它通过简单地保留对象,直到再也没有指向它们的指针为止,来消除悬空指针。几乎所有现代语言都属于这个阵营,从 Python、JavaScript 和 Ruby 到 Java、C# 和 Haskell。
但是依赖垃圾回收,就意味着放弃了对于释放对象时机的精准控制,完全委托给回收器代管。一般来说,垃圾回收器就像奇怪的野兽般难以捉摸,要理解内存为何没有在预期的时机被释放可能颇具挑战。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Rust语言通过引入所有权概念,解决了内存管理和并发编程中的重要问题。Rust的所有权概念内置于语言本身,并通过编译期检查强制执行,每个值都有决定其生命周期的唯一拥有者。文章强调了Rust语言在解决内存管理和并发编程问题上的独特优势和价值。此外,文章还对比了Rust中的所有权概念与C++中的std::string,强调了Rust的规则对内存安全和并发编程的重要性。同时,文章提到了Rust的核心挑战,即学习如何用好这些规则并转化为自己的优势。总的来说,Rust语言的所有权概念为内存管理和并发编程带来了灵活性和安全性,是其成功的基础和语言的根源。文章还介绍了Rust中的Copy和Clone特型,以及Rc和Arc类型的使用,展示了Rust在共享所有权和线程安全方面的优势。文章内容丰富,深入探讨了Rust语言的内存管理和并发编程特性,对于想要深入了解Rust语言的读者具有重要参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 程序设计(第 2 版)》
《Rust 程序设计(第 2 版)》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论