#heap #heap-allocator #allocator #slab #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

#441 in Memory management

Download history 9/week @ 2024-07-06 2/week @ 2024-07-13 2/week @ 2024-07-27 12/week @ 2024-09-21 47/week @ 2024-09-28 2/week @ 2024-10-05

61 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