请教个问题,
fn main() {
let a = 32i64;
let b = &a;
let c = &a;
let s1 = &String::from("hello"); <- 问题1
//b,c 表示a的const 引用,b,c中存放的是a的地址
println!("address of a: {:p}", &a);
println!("address of b: {:p}", &b);
println!("b={} c={}", b, c);
//引用的size 为8
println!("{}", std::mem::size_of::<&i32>());
println!("{}", s1);
}
- 上面代码,let s1 = &String::from("hello");这句话是s1 是引用静态数据区的"hello",还是从heap中创建一个"hello",然后s1是这块内存的引用?
- 如果是s1 引用heap区的内存,那这篇内存的owner是谁?这里只是借用,没有所有权?
1
共 2 条评论, 1 页
评论区
写评论SomeClass::some_ctor()在栈上建个东西,然后s1引用了它,至于SomeClass在不在堆上放数据是它的内部行为。我是这么理解的。
所以1:s1引用了栈上一个变量。
欢迎大佬打脸指正。
你这么写就会编译不过:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=3f907f07399c90574493c0efc3a08c31
s1是匿名的借用吗