#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

#424 in Memory management

Used in lazy-heap

MIT license

428 lines



Create a static allocator in your root module:

use slab_allocator::LockedHeap;

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);


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

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