Struct BeneAlloc

Source
pub struct BeneAlloc {}

Implementations§

Source§

impl BeneAlloc

Source

pub const fn new() -> Self

Trait Implementations§

Source§

impl GlobalAlloc for BeneAlloc

Source§

unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout)

The caller must ensure the ptr and layout are valid, so we do not have to keep track of how much memory was allocated for a given pointer. This helps us, because we do not have to modify the allocated list in other threads, which would require some kind of synchronization. Instead, we can add it to the local free list or deallocate it directly.

§Safety

The caller must ensure ptr and layout are valid. Additionally, the ptr may not be used after this function is called as any use would be UAF The caller must ensure the ptr was allocated by this allocator. This may actually be a larger limitation than originally thought, as memory allocated from outside Rust(like from C) will be allocated correctly, however the old allocator will not know about it and will still track it as used memory, which may cause double frees to not be detected

Source§

unsafe fn alloc(&self, layout: Layout) -> *mut u8

Allocates memory as described by the given layout. Read more
1.28.0 · Source§

unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8

Behaves like alloc, but also ensures that the contents are set to zero before being returned. Read more
1.28.0 · Source§

unsafe fn realloc( &self, ptr: *mut u8, layout: Layout, new_size: usize, ) -> *mut u8

Shrinks or grows a block of memory to the given new_size in bytes. The block is described by the given ptr pointer and layout. Read more
Source§

impl Send for BeneAlloc

Source§

impl Sync for BeneAlloc

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.