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

win*_*412 3 rust

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

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

Mat*_* M. 11

根据定义,你不应该.

Box 是明确创建的,假设它是内部对象的唯一所有者.


当需要多个所有者,您可以使用,而不是RcArc,这些都是引用计数的业主,当最后的主人被破坏的对象将只被丢弃.

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

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