Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // use std::mem::transmute;
- const GLOB: u8 = 12;
- fn lala(a: u8) {
- println!("stack: {:?}", (&a) as *const u8);
- }
- fn main() {
- println!("main: {:?}", (main) as *const fn() -> ());
- println!("lala: {:?}", (lala) as *const fn(u8) -> ());
- println!("GLOB: {:?}", (&GLOB) as *const u8);
- // unsafe {
- // this is OK
- let x = &[0x48_u8,0x89,0xf8,0xc3];
- println!("data1: {:?}", (x) as *const u8);
- // println!("{}", transmute::<_, fn(i64)->i64>(x)(42));
- // this will cause SIGSEGV (Address boundary error)
- let x = [0x48_u8,0x89,0xf8,0xc3];
- println!("data2: {:?}", (&x) as *const u8);
- // println!("{}", transmute::<_, fn(i64)->i64>(&x)(666))
- // }
- lala(10);
- }
Add Comment
Please, Sign In to add comment