Guest User

Untitled

a guest
Aug 17th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. // use std::mem::transmute;
  2.  
  3. const GLOB: u8 = 12;
  4.  
  5. fn lala(a: u8) {
  6. println!("stack: {:?}", (&a) as *const u8);
  7. }
  8.  
  9. fn main() {
  10. println!("main: {:?}", (main) as *const fn() -> ());
  11. println!("lala: {:?}", (lala) as *const fn(u8) -> ());
  12. println!("GLOB: {:?}", (&GLOB) as *const u8);
  13. // unsafe {
  14. // this is OK
  15. let x = &[0x48_u8,0x89,0xf8,0xc3];
  16. println!("data1: {:?}", (x) as *const u8);
  17. // println!("{}", transmute::<_, fn(i64)->i64>(x)(42));
  18.  
  19. // this will cause SIGSEGV (Address boundary error)
  20. let x = [0x48_u8,0x89,0xf8,0xc3];
  21. println!("data2: {:?}", (&x) as *const u8);
  22. // println!("{}", transmute::<_, fn(i64)->i64>(&x)(666))
  23. // }
  24. lala(10);
  25. }
Add Comment
Please, Sign In to add comment