01-内联汇编
内联汇编 — Rust By Example
2 分钟阅读
译文 · 基于 Rust By Example
原文链接: https://doc.rust-lang.org/stable/rust-by-example/unsafe.html
在本章一开始,我们借用官方文档的一句话,“在整个代码库(code base,指构建一个软件系统所使用的全部代码)中,要尽可能减少不安全代码的量”。记住这句话,接着我们进入学习!在 Rust 中,不安全代码块用于避开编译器的保护策略;具体地说,不安全代码块主要用于四件事情:
原始指针(raw pointer,裸指针)* 和引用 &T 有类似的功能,但引用总是安全的,因为借用检查器保证了它指向一个有效的数据。解引用一个裸指针只能通过不安全代码块执行。
| |
一些函数可以声明为不安全的(unsafe),这意味着在使用它时保证正确性不再是编译器的责任,而是程序员的。一个例子就是 std::slice::from_raw_parts,向它传入指向第一个元素的指针和长度参数,它会创建一个切片。
| |
slice::from_raw_parts 假设传入的指针指向有效的内存,且被指向的内存具有正确的数据类型,我们必须满足这一假设,否则程序的行为是未定义的(undefined),于是我们就不能预测会发生些什么了。
内联汇编 — Rust By Example