【问题标题】:When does Rust drop the value in case of reassignment? [duplicate]在重新分配的情况下,Rust 什么时候会删除值? [复制]
【发布时间】:2019-11-21 16:01:22
【问题描述】:
struct Item {
    name: String,
}

impl Item {
    fn new(x: &str) -> Item {
        Item { name: String::from(x) }
    }

    fn change_name(&mut self, x: &str) {
        self.name = String::from(x);
    }
}

fn main() {
    let mut item1 = Item::new("Foo");
    item1.change_name("Bar");
}

当我调用item1.change_name() 时,之前分配给nameString("Foo") 会发生什么情况。 drop() 何时会在 String("Foo") 上被调用?这会泄漏内存吗?

【问题讨论】:

  • 这种情况下当然没有泄漏。你能想象一种现代语言有这样的缺陷吗?

标签: rust


【解决方案1】:

经过一番研究,我得到了答案。

当一个新值被分配给一个变量时(通过覆盖,而不是通过阴影),旧值将作为赋值操作的一部分被删除。

参考

【讨论】:

    猜你喜欢
    • 2017-05-14
    • 2016-06-04
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2012-10-16
    • 1970-01-01
    相关资源
    最近更新 更多