Function core::ptr::from_exposed_addr_mut
source · pub fn from_exposed_addr_mut<T>(addr: usize) -> *mut Twhere
T: Sized,
🔬This is a nightly-only experimental API. (
strict_provenance
#95228)Expand description
将地址转换回错误指针,获取以前的 ‘exposed’ 出处。
这相当于 addr as *mut T
。返回指针的出处是先前传递给 expose_addr
或 ptr as usize
强制转换的 any 指针的出处。
如果没有以前的 ‘exposed’ 出处证明该指针的使用方式是正确的,则程序具有未定义的行为。
请注意,没有算法可以决定使用哪个出处。
您可以将其视为 “guessing” 正确的出处,并且猜测将是 “maximally in your favor”,从某种意义上说,如果有任何方法可以避免未定义的行为,那么这就是将要进行的猜测。
在具有多个地址空间的平台上,您有责任确保该地址在该指针将使用的地址空间中有意义。
使用这种方法意味着代码没有遵循严格的出处规则。
“Guessing” 合适的出处使规范和推理复杂化,并且可能不受帮助您与 Rust 内存模型保持一致的工具的支持,因此建议尽可能使用 with_addr
。
在大多数平台上,这将产生一个与地址具有相同字节的值。 需要在指针中存储附加信息的平台可能不支持此操作,因为通常不可能实际计算返回的指针必须拾取哪个出处。
此 API 及其声明的语义是 Strict Provenance 实验的一部分,有关详细信息,请参见 模块文档。