【发布时间】:2020-10-30 09:33:57
【问题描述】:
我从The Rust Book拍摄了这张照片和代码。
为什么s 指向s1 而不仅仅是堆本身的数据?
如果是这样,它是如何工作的? s 如何指向s1。是否使用包含s1 的内存地址的ptr 字段分配了内存。然后,s1 是否又指向数据。
在s1 中,我似乎正在查看一个带有指针、长度和容量的变量。只有ptr 字段是这里的实际指针吗?
这是我的第一个系统级语言,所以我认为与 C/C++ 的比较不会帮助我理解这一点。我认为部分问题在于我不太了解指针到底是什么以及操作系统如何分配/取消分配内存。
fn main() {
let s1 = String::from("hello");
let len = calculate_length(&s1);
println!("The length of '{}' is {}.", s1, len);
}
fn calculate_length(s: &String) -> usize {
s.len()
}
【问题讨论】:
-
运行此代码时得到的输出是什么?
-
'hello'的长度是5
标签: pointers rust reference ownership borrowing