请教:Box 和 raw pointer 的混用
💡
原文中文,约700字,阅读约需2分钟。
📝
内容提要
本文讨论了在 Rust 中使用链表结构时混用 Box 和 raw pointer 可能导致 UB 的问题。作者认为全部使用 raw pointer 或 NonNull 可以避免这个问题,因为这样任何修改变量都要在 unsafe 中进行,开发者会更加注意变量的读写逻辑。
🎯
关键要点
- 文章讨论了在 Rust 中使用链表结构时混用 Box 和 raw pointer 可能导致未定义行为(UB)。
- 作者认为混用 Box 和 raw pointer 不安全,建议全部使用 raw pointer。
- Box 是安全指针,而 raw pointer 是不安全的,混用可能导致开发者忽视变量的读写逻辑。
- 通过解引用 Box 修改变量是安全的,但通过解引用 raw pointer 是不安全的。
- 如果全部使用 raw pointer 或 NonNull,开发者在修改变量时必须在 unsafe 中进行,从而提高对变量读写逻辑的关注,避免 UB。
🏷️
标签
➡️