#linked-list #allocator #heap #malloc #kernel #no-std

no-std linked_list_allocator

适用于no_std系统的简单分配器。它从释放的块构建链表,因此不需要额外的数据结构。

44个版本

使用旧Rust 2015

0.10.5 2023年3月4日
0.10.4 2022年10月10日
0.10.3 2022年9月6日
0.10.1 2022年7月7日
0.1.2 2016年3月5日

内存管理中排名26

Download history 11514/week @ 2024-03-14 12989/week @ 2024-03-21 11470/week @ 2024-03-28 12449/week @ 2024-04-04 12848/week @ 2024-04-11 12654/week @ 2024-04-18 10768/week @ 2024-04-25 10044/week @ 2024-05-02 9571/week @ 2024-05-09 10196/week @ 2024-05-16 12267/week @ 2024-05-23 10987/week @ 2024-05-30 10420/week @ 2024-06-06 11507/week @ 2024-06-13 13276/week @ 2024-06-20 10556/week @ 2024-06-27

每月下载量47,924
用于70 个crate (36 直接)

Apache-2.0/MIT

69KB
1K SLoC

linked-list-allocator

Crates.io Build Status docs.rs

用法

在根模块中创建一个静态分配器

use linked_list_allocator::LockedHeap;

#[global_allocator]
static ALLOCATOR: LockedHeap = LockedHeap::empty();

在使用此分配器之前,您需要对其进行初始化

pub fn init_heap() {
    let heap_start =;
    let heap_end =;
    let heap_size = heap_end - heap_start;
    unsafe {
        ALLOCATOR.lock().init(heap_start, heap_size);
    }
}

功能

  • use_spin (默认): 通过使用自旋锁提供实现GlobalAlloc trait 的 LockedHeap 类型。
  • alloc_ref: 提供不稳定AllocRef trait 的实现;需要nightly Rust。
    • 警告:AllocRef trait 在Rust侧经常更改,因此在使用此功能时可能会遇到一些频繁的破坏。

许可证

此crate以MIT或Apache许可证(版本2.0)双重授权。有关详细信息,请参阅LICENSE-APACHE和LICENSE-MIT。

依赖关系

~38KB