#pointers

无std aligned_ptr

封装了在 core::ptr 和 core::slice 模块中定义的带有对齐和空检查的功能函数

1 个不稳定版本

0.1.0 2021年6月9日

#357 in 无标准库

MIT/Apache

36KB
157

aligned_ptr

一个确保在解引用之前指针正确对齐的Rust库。

此库包含在 core::ptrcore::slice (除了 read_unalignedwrite_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.0许可证定义,均应按上述方式双授权,不附加任何额外条款或条件。

无运行时依赖