rust - Rust 如何强制/实现 RAII

标签 rust heap-memory raii

<分区>

我正在研究一种(也许)严肃的编程语言,并且想了解如何实现内存管理。我希望这种语言强制执行 RAII,类似于 Rust,但与 Rust 不同的是,这种语言是面向对象的,我希望我可以实现管理自己内存的对象(如 Rust 中的 Boxes)。谁能详细说明 Rust 如何处理对堆内存的引用?

最佳答案

我认为实现类最明显的方法是:

  • 您的类变量作为指针实现,就像在 C# 和 Java 中一样。
  • 对象只有一个所有者,所有类变量都具有移动语义以强制执行这一点,就像在 Rust 中一样。
  • 内存是需要清理的资源,因此所有类变量在调用引用对象的析构函数(如果有的话)之后,也会调用内存分配器的释放例程,就像在 C++ 中一样。
  • 您在类型系统中引入了生命周期,以确保借出/借用对象不允许任何非拥有引用超过它,就像在 Rust 中一样。

关于rust - Rust 如何强制/实现 RAII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065129/

相关文章:

rust - 如何使用流解压缩 Reqwest/Hyper 响应?

rust - 无法修改rp2040上的外设寄存器

java - 64 位 java 不会分配超过 2GB 的堆内存

c - 存储在全局链表中(并在其他函数中访问)的本地结构在 VC2010 中有效。这是正确的 C99/ANSI 吗?

检查 malloc 是否正在使用 pmap 分配所有内存

c++ - 将资源锁定对象作为参数传递

c++ - ScopeGuard 的使用真的会带来更好的代码吗?

testing - 在集成测试中, cargo 测试无法引用目标 crate 内的任何公共(public)元素。单元测试也找不到测试用例

rust - 即使 NLL 打开,循环中的双可变借用错误也会发生

c++ - scoped_lock() - 使用 pthread 的 RAII 实现