小编ruz*_*ick的帖子

替换可变引用中的字符串是否会泄漏内存?

我偶然发现了以下场景:

fn compute_values(value: &mut String) {
    // the first computation should always work:
    let computed_value = String::from("computed value");
    // override the default String with the computed value:
    *value = computed_value;
    // some more code that returns a Result with values or an error message
}

fn main() {
    let mut value = String::from("default value");
    compute_values(&mut value);
    println!("value: {value}")
}
Run Code Online (Sandbox Code Playgroud)

这段代码按照我的预期使用 my 进行编译rustc 1.74.1 (a28077b28 2023-12-04)并输出value: computed value,但问题是,该代码是否泄漏内存。

据我了解,*value = computed_value;进入并且它不再可用(rust编译器确认了这一点,我之后不能computed_value。)并且在函数作用域结束时不会取消分配。由于这一行有效地将 a 分配给 …

rust

5
推荐指数
1
解决办法
155
查看次数

标签 统计

rust ×1