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

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

#466 in Memory management

Download history 21/week @ 2024-02-18 18/week @ 2024-02-25 1/week @ 2024-03-03 9/week @ 2024-03-10 1/week @ 2024-03-17 13/week @ 2024-03-24 38/week @ 2024-03-31 1/week @ 2024-04-07

52 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

~180KB