楼主:
yam276 ('_')
2025-03-21 16:04:10: 从入门到入门
1. 只要不是借用 非基本类型的变量就会在function使用过转移所有权 导致原本变量失效
fn output_string(name: String) {
println!("{}", name);
}
fn main()
{
let a = String::from("abc");
output_string(a);
println!("{}", a); // 编译失败,a已经转移所有权给name并失效
}
2. Stack Frame
Stack Frame会记录该Stack拥有的变量与其内容
Rust会在每个Stack Frame离开后释放该Stack中拥有所有权的变量
3.下列哪一项不是一种未定义的行为?
A. 使用指向已释放内存的指标
B. 在 stack frame 中具有指向已释放内存的指标
C. 再次释放相同的内存
D. 使用非布林值作为条件if
答案是B
指向已释放内存的指标不是未定义行为
使用已释放内存的指标才是
D纯粹是if只吃bool的编译错误