diff --git a/__internal/memory/src/main.rs b/__internal/memory/src/main.rs index 858506e..c7fee31 100644 --- a/__internal/memory/src/main.rs +++ b/__internal/memory/src/main.rs @@ -1,5 +1,5 @@ #[no_mangle] -pub fn malloc_1(len: usize) -> *mut u8 { +pub unsafe fn malloc_1(len: usize) -> *mut u8 { let mut buf = Vec::with_capacity(len); let ptr = buf.as_mut_ptr(); std::mem::forget(buf); @@ -7,33 +7,35 @@ pub fn malloc_1(len: usize) -> *mut u8 { } #[no_mangle] -pub fn free_1(ptr: *mut u8, len: usize) { - let data = unsafe { Vec::from_raw_parts(ptr, len, len) }; +pub unsafe fn free_1(ptr: *mut u8, len: usize) { + let data = Vec::from_raw_parts(ptr, len, len); std::mem::drop(data); } #[no_mangle] -pub fn malloc_2(len: usize) -> *mut u8 { +pub unsafe fn malloc_2(len: usize) -> *mut u8 { let align = std::mem::align_of::(); - let layout = unsafe { std::alloc::Layout::from_size_align_unchecked(len, align) }; - unsafe { std::alloc::alloc(layout) } + let layout = std::alloc::Layout::from_size_align_unchecked(len, align); + std::alloc::alloc(layout) } #[no_mangle] -pub fn free_2(ptr: *mut u8, len: usize) { +pub unsafe fn free_2(ptr: *mut u8, len: usize) { let align = std::mem::align_of::(); - let layout = unsafe { std::alloc::Layout::from_size_align_unchecked(len, align) }; - unsafe { std::alloc::dealloc(ptr, layout) } + let layout = std::alloc::Layout::from_size_align_unchecked(len, align); + std::alloc::dealloc(ptr, layout) } fn main() { - println!("Malloc-1"); - let p = malloc_1(1024); - println!("Free-1"); - free_1(p, 1024); + unsafe { + println!("Malloc-1"); + let p = malloc_1(1024); + println!("Free-1"); + free_1(p, 1024); - println!("Malloc-2"); - let p = malloc_2(1024); - println!("Free-2"); - free_2(p, 1024); + println!("Malloc-2"); + let p = malloc_2(1024); + println!("Free-2"); + free_2(p, 1024); + } }