面试题答案
一键面试优先选择使用Box的场景
- 处理大对象:当对象占用大量内存,将其放在栈上可能导致栈溢出时,使用Box将其分配到堆上。例如,处理大型图像数据、长时间运行的计算结果等。
- 动态大小类型(DST):对于像
str
(动态字符串)这样的动态大小类型,必须使用Box来在堆上分配内存,因为栈上的内存大小在编译时必须是已知的。 - 实现递归数据结构:如链表、树等,使用Box可以在堆上分配节点,避免栈溢出。
Box基本使用代码示例
// 定义一个自定义结构体
struct MyStruct {
data: i32,
}
fn main() {
// 使用Box在堆上存储MyStruct
let boxed_struct: Box<MyStruct> = Box::new(MyStruct { data: 42 });
// 访问结构体中的字段
println!("The data in the boxed struct is: {}", boxed_struct.data);
}