Function std::ptr::from_exposed_addr_mut

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

将地址转换回错误指针,获取以前的 ‘exposed’ 出处。

这相当于 addr as *mut T。返回指针的出处是先前传递给 expose_addrptr as usize 强制转换的 any 指针的出处。 如果没有以前的 ‘exposed’ 出处证明该指针的使用方式是正确的,则程序具有未定义的行为。 请注意,没有算法可以决定使用哪个出处。 您可以将其视为 “guessing” 正确的出处,并且猜测将是 “maximally in your favor”,从某种意义上说,如果有任何方法可以避免未定义的行为,那么这就是将要进行的猜测。

在具有多个地址空间的平台上,您有责任确保该地址在该指针将使用的地址空间中有意义。

使用这种方法意味着代码没有遵循严格的出处规则。 “Guessing” 合适的出处使规范和推理复杂化,并且可能不受帮助您与 Rust 内存模型保持一致的工具的支持,因此建议尽可能使用 with_addr

在大多数平台上,这将产生一个与地址具有相同字节的值。 需要在指针中存储附加信息的平台可能不支持此操作,因为通常不可能实际计算返回的指针必须拾取哪个出处。

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