#分配器 #堆分配器 #裸机 # #无std

无std buddy_system_allocator

使用伙伴系统的裸机分配器

23个版本

0.10.0 2024年7月1日
0.9.1 2024年1月27日
0.9.0 2022年12月14日
0.8.0 2021年4月22日
0.1.2 2019年3月18日

#43内存管理

Download history 3199/week @ 2024-05-03 3172/week @ 2024-05-10 2950/week @ 2024-05-17 2830/week @ 2024-05-24 4009/week @ 2024-05-31 3370/week @ 2024-06-07 3450/week @ 2024-06-14 2737/week @ 2024-06-21 2868/week @ 2024-06-28 4295/week @ 2024-07-05 3927/week @ 2024-07-12 2721/week @ 2024-07-19 2969/week @ 2024-07-26 3408/week @ 2024-08-02 3355/week @ 2024-08-09 3485/week @ 2024-08-16

每月下载量 13,681
用于 5 个Crates4个直接使用

MIT 许可协议

31KB
627

buddy_system_allocator

Crates.io version docs.rs

phil-opp/linked-list-allocator的(几乎)直接替代品。但它使用的是伙伴系统。

用法

要使用buddy_system_allocator作为全局分配器

use buddy_system_allocator::LockedHeap;

#[global_allocator]
static HEAP_ALLOCATOR: LockedHeap = LockedHeap::<32>::empty();

初始化分配器

unsafe {
    HEAP_ALLOCATOR.lock().init(heap_start, heap_size);
    // or
    HEAP_ALLOCATOR.lock().add_to_heap(heap_start, heap_end);
}

您还可以使用FrameAllocatorLockedHeapWithRescue,请参阅它们的文档以了解用法。

特性

  • alloc(默认):提供FrameAllocatorLockedFrameAllocator,它们依赖于全局分配器。
  • use_spin(默认):提供一个实现GlobalAlloc特质的LockedHeap类型,使用自旋锁。

许可协议

部分代码来自phil-opp的linked-list-allocator。

在MIT许可协议下发布。感谢phil-opp的linked-list-allocator带来的灵感和接口。

依赖项

~37KB