首页 > 解决方案 > Rust 影子内存管理

问题描述

fn main() {
  let x = 5;
  let x = x + 1;
  let x = x * 2;
  println!("The value of x is: {}", x);
}

当您的代码调用函数时,函数的局部变量会被推入堆栈。当函数结束时,这些值会从堆栈中弹出。

在映射期间,我们首先声明的变量 x 会发生什么情况?我们是覆盖 x 的内存位置还是在堆栈的另一个位置创建一个新的 x?

标签: rustrust-cargo

解决方案


我们是覆盖 x 的内存位置还是在另一个位置创建一个新的 x?

从语义上讲,创建了一个新的内存位置,并且“x”现在指向该位置。根据所应用的优化,编译器可以重用内存位置。或者甚至根本不分配内存位置,例如,在启用优化的情况下,它会不断折叠所有内容并直接打印常量12


推荐阅读