在下面的代碼當超出範圍時,作用域中的變量是否被複制到不同的內存位置?
fn main() {
let a = get_int();
address_of(&a);
}
fn get_int() -> i32 {
let a = 1;
println!("{:p}", &a);
a
}
fn address_of<A>(a: &A){
println!("{:p}", a);
}
輸出是
0x7fff51d1ba94
0x7fff51d1bb1c
爲什麼當打印不同的存儲器地址相同的值?這是否意味着當超出範圍時,作用域中的變量將被複制到不同的內存位置?
調用堆棧上的值已被彈出,因爲函數返回。如果它繼續引用舊地址,它將訪問未初始化的內存。 – loganfsmyth