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::null
和 NonNull::dangling
这样的东西,它们会产生无效的指针。
(标准 “Zero-Sized-Types get to cheat and lie” 的警告是适用的,尽管可能需要为它们提供自己的 API,以便 100% 清楚地说明这一点。)
此 API 及其声明的语义是 Strict Provenance 实验的一部分,有关详细信息,请参见 模块文档。