diff --git a/src/advance/smart-pointer/box.md b/src/advance/smart-pointer/box.md index 72797f60..63182418 100644 --- a/src/advance/smart-pointer/box.md +++ b/src/advance/smart-pointer/box.md @@ -183,6 +183,7 @@ fn main() { 那如果数组中每个元素都是一个 `Box` 对象呢?来看看 `Vec>` 的内存布局: ```rust + (heap) (stack) (heap) ┌───┐ ┌──────┐ ┌───┐ ┌─→│ 1 │ │ vec2 │──→│B1 │─┘ └───┘ @@ -234,7 +235,7 @@ fn gen_static_str() -> &'static str{ } ``` -在之前的代码中,如果 `String` 创建于函数中,那么返回它的唯一方法就是转移所有权给调用者 `fn move_str() -> String`,而通过 `Box::leak` 我们不仅返回了一个 `&str` 字符串切片,它还是 `'static` 类型的! +在之前的代码中,如果 `String` 创建于函数中,那么返回它的唯一方法就是转移所有权给调用者 `fn move_str() -> String`,而通过 `Box::leak` 我们不仅返回了一个 `&str` 字符串切片,它还是 `'static` 生命周期的! 要知道真正具有 `'static` 生命周期的往往都是编译期就创建的值,例如 `let v = "hello, world"`,这里 `v` 是直接打包到二进制可执行文件中的,因此该字符串具有 `'static` 生命周期,再比如 `const` 常量。