yesallocator/
wrapped.rs

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        // SAFETY: alle garantien liegen bei dem user.
9        let ptr = if !zeroed {
10            raw::alloc(layout)
11        } else {
12            raw::alloc_zeroed(layout)
13        };
14        // SAFETY: alle garantien liegen beim user.
15        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        // SAFETY: alle garantien liegen beim user.
23        let nptr = if !zeroed {
24            raw::realloc(ptr, layout, new_size)
25        } else {
26            raw::realloc_zeroed(ptr, layout, new_size)
27        };
28        // SAFETY: alle garantien liegen beim user.
29        ptr::slice_from_raw_parts_mut(nptr, layout.size())
30    }
31}
32
33#[inline]
34pub unsafe fn deallocate(ptr: *mut [u8]) {
35    unsafe {
36        // SAFETY: alle garantien kommen vom user.
37        raw::dealloc(ptr as *mut u8, Layout::from_size_align_unchecked(0, 0));
38    }
39}