mirror of
https://github.com/KaiserY/trpl-zh-cn
synced 2025-02-22 12:12:20 +08:00
Merge pull request #8 from vincentsong/master
ch04-02 L191 refined the translation for dangling pointer
This commit is contained in:
commit
28f8d0d1e6
@ -188,7 +188,7 @@ immutable
|
||||
|
||||
### 悬垂引用
|
||||
|
||||
在存在指针的语言中,容易错误地生成一个**悬垂指针**(*dangling pointer*),一个引用某个内存位置的指针,这个内存可能已经因为被分配给别人,因为释放内存时指向内存的指针被保留了下来。相比之下,在 Rust 中编译器确保引用永远也不会变成悬垂状态:当我们拥有一些数据的引用,编译器确保数据不会在其引用之前离开作用域。
|
||||
在存在指针的语言中,容易通过释放内存时保留指向它的指针而错误地生成一个**悬垂指针**(*dangling pointer*),所谓悬垂指针是其指向的内存可能已经被分配给其它持有者,。相比之下,在 Rust 中编译器确保引用永远也不会变成悬垂状态:当我们拥有一些数据的引用,编译器确保数据不会在其引用之前离开作用域。
|
||||
|
||||
让我们尝试创建一个悬垂引用:
|
||||
|
||||
|
@ -61,7 +61,7 @@ for (i, &item) in bytes.iter().enumerate() {
|
||||
s.len()
|
||||
```
|
||||
|
||||
现在有了一个找到字符串中第一个单词结尾索引的方法了,不过这有一个问题。我们返回了单单一个`usize`,不过它只在`&String`的上下文中才是一个有意义的数字。换句话说,因为它是一个与`String`像分离的值,无法保证将来它仍然有效。考虑一下列表 4-11 中使用了列表 4-10 `first_word`函数的程序:
|
||||
现在有了一个找到字符串中第一个单词结尾索引的方法了,不过这有一个问题。我们返回了单单一个`usize`,不过它只在`&String`的上下文中才是一个有意义的数字。换句话说,因为它是一个与`String`相分离的值,无法保证将来它仍然有效。考虑一下列表 4-11 中使用了列表 4-10 `first_word`函数的程序:
|
||||
|
||||
<span class="filename">Filename: src/main.rs</span>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user