A simple bump allocator implementation in Rust using sbrk.
Bump Allocator:
┌─────┬─────┬─────┬─────┬──────────────────────┐
│ A1 │ A2 │ A3 │ A4 │ Free Space │
└─────┴─────┴─────┴─────┴──────────────────────┘
▲ ▲
Bump Pointer Program Break
Each allocation "bumps" the pointer forward. Deallocation only releases memory when freeing the last block.
use std::alloc::Layout;
use rallocator::BumpAllocator;
fn main() {
let mut allocator = BumpAllocator::new();
unsafe {
let layout = Layout::new::<u64>();
let ptr = allocator.allocate(layout) as *mut u64;
*ptr = 42;
println!("Value: {}", *ptr);
allocator.deallocate(ptr as *mut u8);
}
}cargo run --example bumpcargo test- Bump allocator with
sbrk -
mmapbackend (WIP)
MIT