Function std::ptr::invalid

const: 1.61.0 · source ·
pub const fn invalid<T>(addr: usize) -> *const T
🔬This is a nightly-only experimental API. (strict_provenance #95228)
Expand description

创建具有给定地址的无效指针。

这与 addr as *const T 不同,addr as *const T 创建一个指针来获取先前公开的出处。有关该操作的更多详细信息,请参见 from_exposed_addr

该模块的顶层文档讨论了 “invalid” 指针的确切含义,但本质上这表示该指针与任何实际分配无关,只不过是一个伪装的 usize 地址。

该指针将没有与之关联的 provenance,因此 read/write/offset 是 UB 的。这主要是为了促进像 ptr::nullNonNull::dangling 这样的东西,它们会产生无效的指针。

(标准 “Zero-Sized-Types get to cheat and lie” 的警告是适用的,尽管可能需要为它们提供自己的 API,以便 100% 清楚地说明这一点。)

此 API 及其声明的语义是 Strict Provenance 实验的一部分,有关详细信息,请参见 模块文档