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");
}
Run Code Online (Sandbox Code Playgroud)
当我调用 时,分配给先前的item1.change_name()会发生什么。什么时候会被叫到?这会泄漏内存吗?String("Foo")namedrop()String("Foo")
经过一番研究后我得到了答案。
当将新值分配给变量(通过覆盖,而不是通过隐藏)时,旧值将作为分配操作的一部分被删除。
参考
| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |