为什么整数被引用时会在堆上?

当我跑

fn main() {
    println!("{:p}", &0);
    println!("{:p}", &1);
}

在Rust 游乐场,
我得到了类似的东西

0x560882842004
0x560882842008

暗示01被放置在堆上。为什么?

回答

它们没有放在堆上。它们位于已编译二进制文件的静态只读数据段中,并在运行时加载到只读内存中。由于这个原因&T,Rust 源代码中的每个硬编码都有'static生命周期。例子:

fn returns_static_immutable_readonly_num() -> &'static i32 {
    &0 // compiles
}


以上是为什么整数被引用时会在堆上?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>