diff --git a/examples/bare4.rs b/examples/bare4.rs index bdfd2f7098e497fa04a4e49867a01cb9963d0cfa..81f7d26b11e104b541dc1e52bd27c2ba52cbc9e5 100644 --- a/examples/bare4.rs +++ b/examples/bare4.rs @@ -39,8 +39,8 @@ use address::*; #[inline(always)] fn read_u32(addr: u32) -> u32 { - unsafe { core::ptr::read_volatile(addr as *const _) } - //core::ptr::read_volatile(addr as *const _) + //unsafe { core::ptr::read_volatile(addr as *const _) } + core::ptr::read_volatile(addr as *const _) } #[inline(always)] @@ -108,12 +108,14 @@ fn main() -> ! { // // What was the error message and explain why. // -// ** your answer here ** +// ** "call to unsafe function is unsafe and requires unsafe function or block" +// The read_volatile takes a raw pointer as parameter, dereferencing a raw pointer is always considered unsafe +// ** // // Digging a bit deeper, why do you think `read_volatile` is declared `unsafe`. // (https://doc.rust-lang.org/core/ptr/fn.read_volatile.html, for some food for thought ) // -// ** your answer here ** +// ** It's not certain that the memory address is readable or that the memory is aligned thus may result in undefined behavior ** // // Commit your answers (bare4_2) //