Trait dlmalloc::Allocator [−][src]
pub unsafe trait Allocator: Send {
fn alloc(&self, size: usize) -> (*mut u8, usize, u32);
fn remap(
&self,
ptr: *mut u8,
oldsize: usize,
newsize: usize,
can_move: bool
) -> *mut u8;
fn free_part(&self, ptr: *mut u8, oldsize: usize, newsize: usize) -> bool;
fn free(&self, ptr: *mut u8, size: usize) -> bool;
fn can_release_part(&self, flags: u32) -> bool;
fn allocates_zeros(&self) -> bool;
fn page_size(&self) -> usize;
}Expand description
In order for this crate to efficiently manage memory, it needs a way to communicate with the
underlying platform. This Allocator trait provides an interface for this communication.
Required methods
Allocates system memory region of at least size bytes
Returns a triple of (base, size, flags) where base is a pointer to the beginning of the
allocated memory region. size is the actual size of the region while flags specifies
properties of the allocated region. If EXTERN_BIT (bit 0) set in flags, then we did not
allocate this segment and so should not try to deallocate or merge with others.
This function can return a std::ptr::null_mut() when allocation fails (other values of
the triple will be ignored).
Remaps system memory region at ptr with size oldsize to a potential new location with
size newsize. can_move indicates if the location is allowed to move to a completely new
location, or that it is only allowed to change in size. Returns a pointer to the new
location in memory.
This function can return a std::ptr::null_mut() to signal an error.
Frees a part of a memory chunk. The original memory chunk starts at ptr with size oldsize
and is turned into a memory region starting at the same address but with newsize bytes.
Returns true iff the access memory region could be freed.
Frees an entire memory region. Returns true iff the operation succeeded. When false is
returned, the dlmalloc may re-use the location on future allocation requests
fn can_release_part(&self, flags: u32) -> bool
fn can_release_part(&self, flags: u32) -> bool
Indicates if the system can release a part of memory. For the flags argument, see
Allocator::alloc
fn allocates_zeros(&self) -> bool
fn allocates_zeros(&self) -> bool
Indicates whether newly allocated regions contain zeros.