我想将
*mut
指针转换为 &mut
引用。// Both setting a value to ptr and getting a value from ptr succeeds.
let ptr: &mut usize = unsafe { &mut *(VIRTUAL_ADDRESS_TO_ACCESS_FREE_PAGE as *mut usize) };
这段代码是可行的。但是,如果&mut
在unsafe
块之外,那么代码将无法完全工作。 *ptr = foo
将不会将foo
存储到指针ptr
指向的内存中,但let foo = *ptr
会将*ptr
的值赋给foo
。
// Setting a value to ptr fails, but getting a value from ptr succeeds.
let ptr: &mut usize = &mut unsafe { *(VIRTUAL_ADDRESS_TO_ACCESS_FREE_PAGE as *mut usize) };
unsafe { &mut }
和&mut unsafe{ }
有什么区别?