面试题答案
一键面试Box<T>
智能指针实现原理及内存管理:- 原理:
Box<T>
是Rust标准库提供的一种智能指针,用于在堆上分配数据。它通过内部持有指向堆上数据的指针来实现对数据的引用。 - 内存管理:当
Box<T>
离开其作用域时,Rust的所有权系统会自动调用Box<T>
的析构函数。在析构函数中,Box<T>
会释放其指向的堆内存,从而防止内存泄漏。这一切都是自动的,无需手动管理内存释放。
- 原理:
- 使用
Box<MyStruct>
分配在堆上并访问其成员:
在上述代码中,通过struct MyStruct { data: i32, } fn main() { let my_box = Box::new(MyStruct { data: 42 }); // 访问成员 println!("The data is: {}", my_box.data); }
Box::new
将MyStruct
实例分配到堆上,得到Box<MyStruct>
。之后可以像访问普通结构体成员一样,使用点号(.
) 来访问其成员。