MST

星途 面试题库

面试题:Rust结构体中变量默认初始化策略及内存管理

定义一个包含两个成员变量的结构体`Point`,一个是`i32`类型的`x`,另一个是`f64`类型的`y`。在不使用`Default` trait 手动实现的情况下,声明并初始化该结构体的实例。阐述在这个过程中,Rust对于结构体成员变量的默认初始化策略以及内存管理机制。
22.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义Point结构体
struct Point {
    x: i32,
    y: f64,
}

fn main() {
    // 声明并初始化结构体实例
    let p = Point {
        x: 10,
        y: 3.14,
    };
    println!("Point x: {}, y: {}", p.x, p.y);
}

Rust对于结构体成员变量的默认初始化策略

在Rust中,结构体成员变量不会有默认值。必须在创建结构体实例时显式地初始化每个成员变量。这有助于在编译时捕获未初始化变量的错误,提高程序的安全性和稳定性。

Rust的内存管理机制

  1. 栈和堆:对于像i32这样的基本类型,它们的值直接存储在栈上。而对于像String或自定义复杂类型等较大的数据结构,其数据存储在堆上,栈上只存储指向堆数据的指针。在Point结构体中,xi32类型)和yf64类型)都是基本类型,它们的值会直接存储在栈上,因为它们的大小在编译时是已知的。
  2. 所有权系统:Rust通过所有权系统管理内存。每个值都有一个所有者,当所有者离开其作用域时,Rust会自动释放该值所占用的内存。在上述例子中,当p离开main函数的作用域时,Rust会自动清理p所占用的栈空间,由于xy都是基本类型,它们不需要额外的堆内存分配,所以清理过程简单高效。