Dar*_*ell 4 memory rust borrow
示例代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
如果第三次分配包含&3代码输出:
0x558e7da926a0
0x558e7da926a4
0x558e7da926a8
Run Code Online (Sandbox Code Playgroud)
如果第三个分配包含&2(与第二个分配相同的值),则代码输出:
0x558e7da926a0
0x558e7da926a4
0x558e7da926a4
Run Code Online (Sandbox Code Playgroud)
如果第三个分配包含&5(与第一个分配相同的值),则代码输出:
0x558e7da926a0
0x558e7da926a4
0x558e7da926a0
Run Code Online (Sandbox Code Playgroud)
如果赋值相同,为什么生锈不释放内存而是重新使用它,否则分配新的内存块?
相同文字数的两次出现是无法区分的。您不能期望两个文字的地址相同,也不能期望它们不同。
这允许编译器(但实际上可以自由地进行其他操作)5在可执行代码中发出一个数据,并全部&5引用该数据。常量可能(见注释)也有一个静态的一生,在这种情况下,他们没有被分配/程序执行过程中释放,他们总是被分配。