Box::into_raw() 和 Box::leak() 之间到底有什么区别?

Pro*_*ter 5 rust

如您所知,Box::into_raw() 和 Box::leak() 都会消耗当前的 Box 并失去内存的所有权。

两者似乎只是返回值类型不同,那么它们之间的另一个区别究竟是什么?

典型应用场景如何?

Jmb*_*Jmb 8

into_raw通常用于 FFI 获取可发送到其他语言的指针,并且通常与稍后的调用相匹配以from_raw回收所有权并释放内存。

leak通常用于获取'static引用以满足某些 API 要求,并且通常会保留到程序退出为止。