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

Dom*_*iml -3 rust

当我跑

fn main() {
    println!("{:p}", &0);
    println!("{:p}", &1);
}
Run Code Online (Sandbox Code Playgroud)

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

0x560882842004
0x560882842008
Run Code Online (Sandbox Code Playgroud)

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

kfe*_*v91 5

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

fn returns_static_immutable_readonly_num() -> &'static i32 {
    &0 // compiles
}
Run Code Online (Sandbox Code Playgroud)