1 个不稳定版本
0.1.0 | 2021年6月9日 |
---|
#357 in 无标准库
36KB
157 行
aligned_ptr
一个确保在解引用之前指针正确对齐的Rust库。
此库包含在 core::ptr
和 core::slice
(除了 read_unaligned
和 write_unaligned
) 中定义的不安全函数。此crate中定义的所有函数都会检查传入的指针是否正确对齐且非空。
此crate旨在防止解引用未对齐的地址。例如,以下代码示例会引发恐慌,因为 p
指向了一个未对齐的地址。如果我们导入 core::ptr
而不是 aligned_ptr::ptr
,则此代码可能成功运行。然而,从未对齐的指针读取值会导致 未定义的行为(除了 read_unaligned
)。
use aligned_ptr::ptr;
fn main() {
let x = 0xdeadbeaf_u32;
let p = (&x as *const u32 as usize + 1) as *const u16;
unsafe { ptr::read(p) };
}
此crate支持 no_std
环境。
许可证
根据以下任一许可证授权:
- Apache许可证第2版 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可选择。
贡献
除非您明确声明,否则您提交给作品包含的任何贡献,根据Apache-2.0许可证定义,均应按上述方式双授权,不附加任何额外条款或条件。