【发布时间】: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() 时,之前分配给name 的String("Foo") 会发生什么情况。 drop() 何时会在 String("Foo") 上被调用?这会泄漏内存吗?
【问题讨论】:
-
这种情况下当然没有泄漏。你能想象一种现代语言有这样的缺陷吗?
标签: rust