Rust为何重用具有相同值的内存

问题描述 投票:0回答:1

示例代码:

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

为什么生锈不释放内存,而是在分配值相同的情况下重用它,否则分配新的内存块?

memory rust borrow
1个回答
0
投票

优化编译器可以使用许多技巧来确定是否可以为变量分配常量值。您的发现与此一致,如果不需要,则无需运行重复的代码。

© www.soinside.com 2019 - 2024. All rights reserved.