1use core::alloc::Layout;
2use std::ptr;
3use crate::raw;
4
5#[inline]
6pub unsafe fn allocate(layout: Layout, zeroed: bool) -> *mut [u8] {
7 unsafe {
8 let ptr = if !zeroed {
10 raw::alloc(layout)
11 } else {
12 raw::alloc_zeroed(layout)
13 };
14 ptr::slice_from_raw_parts_mut(ptr, layout.size())
16 }
17}
18
19#[inline]
20pub unsafe fn reallocate(ptr: *mut u8, layout: Layout, new_size: usize, zeroed: bool) -> *mut [u8] {
21 unsafe {
22 let nptr = if !zeroed {
24 raw::realloc(ptr, layout, new_size)
25 } else {
26 raw::realloc_zeroed(ptr, layout, new_size)
27 };
28 ptr::slice_from_raw_parts_mut(nptr, layout.size())
30 }
31}
32
33#[inline]
34pub unsafe fn deallocate(ptr: *mut [u8]) {
35 unsafe {
36 raw::dealloc(ptr as *mut u8, Layout::from_size_align_unchecked(0, 0));
38 }
39}