#allocator #global-allocator #toy #index #alloc #static #region

index_alloc

A toy static allocator wich can serve as a global_allocator

2 releases

0.1.1 May 16, 2024
0.1.0 May 4, 2024

#180 in Memory management

Download history 146/week @ 2024-04-30 9/week @ 2024-05-07 148/week @ 2024-05-14 15/week @ 2024-05-21

163 downloads per month

MIT license

39KB
816 lines

Index Alloc

A simple, toy static Allocator which use a fixed length array to store allocated data.

This crate expose a struct IndexAllocator which implement GlobalAlloc so it can be uses as the global allocator in no_std environment.

Disadvantages :

  • Extremely unsafe
  • Very slow
  • Memory inefficient

Even though it seems unusable, it has plenty of advantages :

  • Just kidding, don't use that

To store allocated memory, IndexAllocator uses a MemoryIndex which stores a list of regions containing the state of the region (size, from which address, used status). For instance :

use index_alloc::IndexAllocator;

#[global_allocator]
static ALLOCATOR: IndexAllocator<2048, 16> = IndexAllocator::empty();

fn main() {
    let test_str = String::from("Hello World");
    println!("{test_str}");
}

See more example in the Repository's Examples.

No runtime deps