#slab-allocator #heap-allocator #blocks #size #systems #kernel #multiple

no-std slab_allocator_rs

Slab allocator for no_std systems. Uses multiple slabs with blocks of different sizes and a buddy system allocator for blocks larger than 4096 bytes. Updated to latest nightly rust

3 stable releases

1.0.2 Jan 7, 2023
1.0.1 Nov 18, 2021
1.0.0 May 18, 2021

#356 in Memory management

40 downloads per month

MIT license

21KB
428 lines

slab_allocator_rs

Usage

Create a static allocator in your root module:

use slab_allocator::LockedHeap;

#[global_allocator]
static ALLOCATOR: LockedHeap = LockedHeap::empty();

Before using this allocator, you need to init it:

pub fn init_heap() {
    let heap_start =;
    let heap_end =;
    let heap_size = heap_end - heap_start;
    unsafe {
        ALLOCATOR.init(heap_start, heap_size);
    }
}

License

This crate is licensed under MIT. See LICENSE for details.

This is an updated fork of https://github.com/weclaw1/slab_allocator

Dependencies

~180KB