Rust 学习笔记:关于 Unsafe Rust 的练习题
Rust 学习笔记:关于 Unsafe Rust 的练习题
参考视频:
- https://www.bilibili.com/video/BV14b5Xz5EAz
问题一
以下哪些是 Rust 在 unsafe 块中启用的超能力?
A. 禁用借用检查器
B. 调用被标记为 unsafe 的函数
C. 将引用转化为原始指针
D. 解引用原始指针
答:B、D。
问题二
以下代码能否通过编译?若能,输出是?
fn main() {
let mut v = Vec::with_capacity(4);
for i in 0..3 {
v.push(i);
}
let n = &v[0] as *const i32;
v.push(4);
println!("{}", unsafe { *n });
}
答:可以通过编译。输出是 0。
问题三
以下哪些是使用 unsafe 代码(或围绕 unsafe 代码的安全包装器)来绕过借用检查器的惯用方法?
A. 获取对数组中不相交索引的两个可变引用
B. 允许值在未被读取时未初始化
C. 返回指向栈上分配的变量的指针
D. 让结构体的一个字段的引用位于同一结构体的另一个字段
答:A、B、D。