简介
在本实验中,我们将探索 Rust 中的装箱(boxing)、栈分配和堆分配概念。在 Rust 中,所有值默认都是在栈上分配的,但可以使用 Box<T>
类型将它们装箱(在堆上分配)。一个装箱是指向堆分配值的智能指针,当它超出作用域时,其析构函数会被调用,堆上的内存会被释放。装箱允许创建双重间接引用,并且可以使用 *
运算符进行解引用。本实验提供了代码示例,并解释了装箱的工作原理以及它如何影响栈上的内存分配。
注意:如果实验未指定文件名,你可以使用任何你想要的文件名。例如,你可以使用
main.rs
,并通过rustc main.rs &&./main
进行编译和运行。
Skills Graph
%%%%{init: {'theme':'neutral'}}%%%%
flowchart RL
rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"])
rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"])
rust(("Rust")) -.-> rust/AdvancedTopicsGroup(["Advanced Topics"])
rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"])
rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"])
rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations")
rust/DataTypesGroup -.-> rust/floating_types("Floating-point Types")
rust/DataTypesGroup -.-> rust/string_type("String Type")
rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax")
rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements")
rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax")
rust/AdvancedTopicsGroup -.-> rust/operator_overloading("Traits for Operator Overloading")
subgraph Lab Skills
rust/variable_declarations -.-> lab-343181{{"装箱、栈和堆"}}
rust/floating_types -.-> lab-343181{{"装箱、栈和堆"}}
rust/string_type -.-> lab-343181{{"装箱、栈和堆"}}
rust/function_syntax -.-> lab-343181{{"装箱、栈和堆"}}
rust/expressions_statements -.-> lab-343181{{"装箱、栈和堆"}}
rust/method_syntax -.-> lab-343181{{"装箱、栈和堆"}}
rust/operator_overloading -.-> lab-343181{{"装箱、栈和堆"}}
end