FreeListAllocator

Struct FreeListAllocator 

Source
pub struct FreeListAllocator;
Expand description

A non-thread-safe allocator using a free list. Complexity of allocation and deallocation is O(length of free list).

The free list is sorted by address, and adjacent memory blocks are merged when inserting new blocks.

一个使用空闲链表的非线程安全分配器。 分配和释放操作的时间复杂度为 O(空闲链表长度)。

空闲链表按地址排序,并且在插入新块时会合并相邻的内存块。

Implementations§

Source§

impl FreeListAllocator

Source

pub const fn new() -> Self

Source

pub unsafe fn reset()

Testing only: Reset the internal state. Safety: usage is inherently unsafe if allocator is in use.

Trait Implementations§

Source§

impl GlobalAlloc for FreeListAllocator

Source§

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

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

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

Deallocates the block of memory at the given ptr pointer with the given layout. Read more
1.28.0§

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§

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 FreeListAllocator

Source§

impl Sync for FreeListAllocator

Safety Warning: Allocators in this module are designed for [Single Threaded] environments. Sync is implemented only to satisfy GlobalAlloc trait requirements. Using this allocator in a multi-threaded environment will lead to Undefined Behavior (UB). Please ensure it is used only in single-threaded environments (e.g., WASM or single-threaded embedded).

安全性警示 (Safety Warning): 本模块中的分配器均为【单线程】设计。 实现了 Sync 仅为了满足 GlobalAlloc trait 的要求。 在多线程环境中使用此分配器会导致未定义行为 (UB)。 请确保只在单线程环境(如 WASM 或单线程嵌入式环境)中使用。

Auto Trait Implementations§

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.