小编too*_*bie的帖子

为什么后续的 Rust 变量会递增堆栈指针而不是递减它?

我发现很奇怪的是,当你在 Rust 中创建静态分配的变量时,它似乎随着堆栈指针的增加而增加。我知道情况并非如此,因为堆栈指针随着内存分配而减少。

如果我在 C 中做同样的事情,我会看到堆栈指针随着我创建更多变量而减少。

为什么会这样呢?Rust 编译器是否从下到上而不是从上到下分配它们?

fn main() {
    let i1 = 1;
    let i2 = 1;
    let i3 = 1;
    println!("i1 : {:?}", &i1 as *const i32);
    println!("i2 : {:?}", &i2 as *const i32);
    println!("i3 : {:?}", &i3 as *const i32);
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,我收到以下信息:

fn main() {
    let i1 = 1;
    let i2 = 1;
    let i3 = 1;
    println!("i1 : {:?}", &i1 as *const i32);
    println!("i2 : {:?}", &i2 as *const i32);
    println!("i3 : {:?}", &i3 as …
Run Code Online (Sandbox Code Playgroud)

memory stack pointers allocation rust

2
推荐指数
1
解决办法
512
查看次数

标签 统计

allocation ×1

memory ×1

pointers ×1

rust ×1

stack ×1