有没有办法让多个`Box`指向同一堆内存?

时间:2017-04-05 09:32:22

标签: rust

好像Box.clone()复制堆内存。据我所知,Box在它超出其范围之后将被破坏,以及它指向的内存区域。

所以我想问一种方法来创建指向同一内存区域的多个Box对象。

1 个答案:

答案 0 :(得分:11)

根据定义,你不会

Box是在假设它是内部对象的唯一所有者的情况下显式创建的。

当需要多个所有者时,您可以使用RcArc,这些是引用计数的所有者,只有在最后一个所有者被销毁时才会删除该对象。

但请注意,它们并非没有缺点:

  • 如果没有运行时检查,则无法突变所包含的对象;如果需要变异,则需要使用CellRefCell或某些Mutex,例如,
  • 可能会意外形成对象循环,并且由于Rust没有垃圾收集器,因此这些循环将被泄露。