rust - 调用函数返回但未分配的值的所有权会怎样?
问题描述
考虑以下 Rust 代码,根据 The Book中的示例稍作修改。
我试图了解在函数中第二次运行函数时值会发生什么dangle()
(main()
见评论)。我可以想象,因为该值没有分配给任何所有者,所以它被解除分配,但到目前为止我还没有找到信息来确认这一点。否则,我会认为dangle()
重复调用会不断分配更多内存而不释放它。它是哪一个?
fn main() {
// Ownership of dangle()'s return value is passed to the variable `thingamabob`.
let thingamabob = dangle();
// No ownership specified. Is the return value deallocated here?
dangle();
println!("Ref: {}", thingamabob);
}
fn dangle() -> String {
// Ownership specified.
let s = String::from("hello");
// Ownership is passed to calling function.
s
}
解决方案
当一个值没有所有者(未绑定到变量)时,它就会超出范围。超出范围的值将被删除。删除一个值会释放与该值关联的资源。
任何更少都会导致内存泄漏,这在编程语言中将是一个糟糕的主意。
也可以看看:
推荐阅读
- java - 在应用程序中加载 .mp3 文件名时出错,显示错误我找不到
- salesforce - DocuSign 电子邮件资源文件未更新
- hadoop - 通过pyspark更新hive中的插入数据
- javascript - 根据列值隐藏列
- javascript - Angularr ngModel 并从数组中删除数据
- c# - TNS 侦听器当前不知道连接描述符中请求的服务 -> OracleInternal.Network 错误
- python - Doc2vec 文档与文档子集的最大相似度得分
- java - 无法加载位于 file:///android_asset/file.html 的网页,因为:net::ERR_FILE_NOT_FOUND
- python - Python 记录器不显示来自外部模块的警告
- javascript - 如何在JS中独立于用户当前时间获取一个城市的当前时间?