面试题答案
一键面试在Rust中,固定大小的数组在编译时其大小就已知,因此会在栈上分配内存。
以下是一个固定大小数组的内存分配和释放过程的示例:
fn main() {
// 定义一个固定大小的数组
let numbers: [i32; 5] = [1, 2, 3, 4, 5];
// 此时数组`numbers`在栈上分配内存,存放这5个i32类型的值
// 当`numbers`离开其作用域时,会自动释放内存
}
// `numbers`离开作用域,栈上为其分配的内存被释放
在上述示例中,let numbers: [i32; 5] = [1, 2, 3, 4, 5];
语句定义了一个包含5个i32
类型元素的数组numbers
。Rust编译器在编译时知道数组的大小为5,会在栈上为其分配连续的内存空间来存放这5个i32
值。当numbers
离开其作用域(main
函数结束)时,栈上为其分配的内存会自动释放。