#heap-allocator #slab-allocator #kernel #no-std #allocator #block

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

#547 in Memory management

Download history 4/week @ 2025-01-13 6/week @ 2025-02-03 8/week @ 2025-02-10 2/week @ 2025-02-17 15/week @ 2025-02-24 75/week @ 2025-03-03 60/week @ 2025-03-10 24/week @ 2025-03-17 27/week @ 2025-03-24 56/week @ 2025-03-31

168 downloads per month
Used in lazy-heap

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

~185KB