示例代码:
fn main() {
let mut y = &5; // 1
println!("{:p}", y);
{
let x = &2; // 2
println!("{:p}", x);
y = x;
}
y = &3; // 3
println!("{:p}", y);
}
如果第三个任务包含
&3
,则代码输出:0x558e7da926a0
0x558e7da926a4
0x558e7da926a8
如果第三个赋值包含
&2
(与第二个赋值相同),则代码输出:0x558e7da926a0
0x558e7da926a4
0x558e7da926a4
如果第三个变量包含
&5
(与第一个变量相同),则代码输出:0x558e7da926a0
0x558e7da926a4
0x558e7da926a0
为什么Rust不释放内存,而是在赋值相同的情况下重复使用它,否则分配一个新的内存块?