|
|
@ -131,7 +131,7 @@ Rust 在同时使用可变与不可变引用时也强制采用类似的规则。
|
|
|
|
|
|
|
|
|
|
|
|
在具有指针的语言中,很容易通过释放内存时保留指向它的指针而错误地生成一个**悬垂指针**(*dangling pointer*)—— 指向可能已被分配给其他用途的内存位置的指针。相比之下,在 Rust 中编译器确保引用永远也不会变成悬垂引用:当你拥有一些数据的引用,编译器确保数据不会在其引用之前离开作用域。
|
|
|
|
在具有指针的语言中,很容易通过释放内存时保留指向它的指针而错误地生成一个**悬垂指针**(*dangling pointer*)—— 指向可能已被分配给其他用途的内存位置的指针。相比之下,在 Rust 中编译器确保引用永远也不会变成悬垂引用:当你拥有一些数据的引用,编译器确保数据不会在其引用之前离开作用域。
|
|
|
|
|
|
|
|
|
|
|
|
让我们尝试创建一个悬垂引用,看看 Rust 如何通过通过一个编译时错误来防止它:
|
|
|
|
让我们尝试创建一个悬垂引用,看看 Rust 如何通过一个编译时错误来防止它:
|
|
|
|
|
|
|
|
|
|
|
|
<span class="filename">文件名:src/main.rs</span>
|
|
|
|
<span class="filename">文件名:src/main.rs</span>
|
|
|
|
|
|
|
|
|
|
|
|