feat: update memory

This commit is contained in:
2023-01-19 22:22:47 +08:00
parent 137e04eda0
commit e44aa7f60c

View File

@@ -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::<usize>();
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::<usize>();
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);
}
}