Skip to content

Simple general-purpose memory allocator written in Rust

License

Notifications You must be signed in to change notification settings

0xErwin1/rallocator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rallocator

A simple bump allocator implementation in Rust using sbrk.

Overview

  Bump Allocator:
  
  ┌─────┬─────┬─────┬─────┬──────────────────────┐
  │ A1  │ A2  │ A3  │ A4  │     Free Space       │
  └─────┴─────┴─────┴─────┴──────────────────────┘
                          ▲                      ▲
                    Bump Pointer           Program Break

Each allocation "bumps" the pointer forward. Deallocation only releases memory when freeing the last block.

Usage

use std::alloc::Layout;
use rallocator::BumpAllocator;

fn main() {
    let mut allocator = BumpAllocator::new();

    unsafe {
        let layout = Layout::new::<u64>();
        let ptr = allocator.allocate(layout) as *mut u64;

        *ptr = 42;
        println!("Value: {}", *ptr);

        allocator.deallocate(ptr as *mut u8);
    }
}

Run Example

cargo run --example bump

Run Tests

cargo test

Roadmap

  • Bump allocator with sbrk
  • mmap backend (WIP)

License

MIT

About

Simple general-purpose memory allocator written in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages