Struct capnp::message::HeapAllocator
source · pub struct HeapAllocator { /* private fields */ }
Expand description
Standard segment allocator. Allocates each segment via alloc::alloc::alloc_zeroed()
.
Implementations§
source§impl HeapAllocator
impl HeapAllocator
pub fn new() -> HeapAllocator
sourcepub fn first_segment_words(self, value: u32) -> HeapAllocator
pub fn first_segment_words(self, value: u32) -> HeapAllocator
Sets the size of the initial segment in words, where 1 word = 8 bytes.
sourcepub fn allocation_strategy(self, value: AllocationStrategy) -> HeapAllocator
pub fn allocation_strategy(self, value: AllocationStrategy) -> HeapAllocator
Sets the allocation strategy for segments after the first one.
sourcepub fn max_segment_words(self, value: u32) -> HeapAllocator
pub fn max_segment_words(self, value: u32) -> HeapAllocator
Sets the maximum number of words allowed in a single allocation.
Trait Implementations§
source§impl Allocator for HeapAllocator
impl Allocator for HeapAllocator
source§fn allocate_segment(&mut self, minimum_size: u32) -> (*mut u8, u32)
fn allocate_segment(&mut self, minimum_size: u32) -> (*mut u8, u32)
Allocates zeroed memory for a new segment, returning a pointer to the start of the segment
and a u32 indicating the length of the segment in words. The allocated segment must be
at least
minimum_size
words long (minimum_size * 8
bytes long). Allocator implementations
commonly allocate much more than the minimum, to reduce the total number of segments needed.
A reasonable strategy is to allocate the maximum of minimum_size
and twice the size of the
previous segment. Read moresource§fn deallocate_segment(&mut self, ptr: *mut u8, word_size: u32, _words_used: u32)
fn deallocate_segment(&mut self, ptr: *mut u8, word_size: u32, _words_used: u32)
Indicates that a segment, previously allocated via allocate_segment(), is no longer in use.
word_size
is the length of the segment in words, as returned from allocate_segment()
.
words_used
is always less than or equal to word_size
, and indicates how many
words (contiguous from the start of the segment) were possibly written with non-zero values. Read more