众所周知,Box::into_raw() 和 Box::leak() 都会消耗当前的 Box 并失去对内存的所有权。 这两个函数似乎只是返回值类型不同,那么它们之间到底有什么区别呢? 它们的典型应用场景如何?
into_raw 通常用于 FFI,以获取一个指针,该指针可以发送到其他语言,并通常与稍后调用的 from_raw 匹配,以重新获取所有权并释放内存。 leak 通常用于获取 'static 引用以满足某些 API 要求,并通常保留直到程序退出。
into_raw
通常用于外部函数接口(FFI),以获取一个指针,该指针可以被发送到其他语言,并且通常与稍后调用的from_raw
匹配以重新获取所有权并释放内存。leak
通常用于获取一个'static
引用来满足某些API要求,并且通常会保留直到程序退出。 - Jmb'static
引用是实际正确的生存期这一点之外,那几乎涵盖了所有内容。 - Ry-