From e44aa7f60ca4334daee75c3cb733f65a8760a526 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Thu, 19 Jan 2023 22:22:47 +0800 Subject: [PATCH] feat: update memory --- __internal/memory/src/main.rs | 36 ++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) 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); + } }