示例代码:
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不释放内存而是在赋值相同的情况下重用它,否则分配一个新的内存块?