3个不稳定版本

0.5.1 2023年11月5日
0.5.0 2022年12月8日
0.0.0 2022年12月6日

42内存管理 中排名

Download history 2071/week @ 2024-04-08 2300/week @ 2024-04-15 2354/week @ 2024-04-22 2661/week @ 2024-04-29 1920/week @ 2024-05-06 2597/week @ 2024-05-13 2478/week @ 2024-05-20 2440/week @ 2024-05-27 2295/week @ 2024-06-03 2755/week @ 2024-06-10 3171/week @ 2024-06-17 2745/week @ 2024-06-24 2689/week @ 2024-07-01 2756/week @ 2024-07-08 3444/week @ 2024-07-15 3736/week @ 2024-07-22

每月下载量 13,039
用于 9 个crate(7 个直接使用)

MIT/Apache

15KB
77

crates.io crates.io 最低支持的Rust版本 - 文档 - 变更日志

嵌入式-分配

嵌入式系统的堆分配器。

请注意,将此用作全局分配器需要Rust 1.68或更高版本。(在早期版本中,您需要不稳定功能 #![feature(default_alloc_error_handler)]

该项目由libs团队开发和维护。

示例

从Rust 1.68开始,这个crate可以作为稳定Rust的全局分配器使用

#![no_std]
#![no_main]

extern crate alloc;

use cortex_m_rt::entry;
use embedded_alloc::Heap;

#[global_allocator]
static HEAP: Heap = Heap::empty();

#[entry]
fn main() -> ! {
    // Initialize the allocator BEFORE you use it
    {
        use core::mem::MaybeUninit;
        const HEAP_SIZE: usize = 1024;
        static mut HEAP_MEM: [MaybeUninit<u8>; HEAP_SIZE] = [MaybeUninit::uninit(); HEAP_SIZE];
        unsafe { HEAP.init(HEAP_MEM.as_ptr() as usize, HEAP_SIZE) }
    }

    // now the allocator is ready types like Box, Vec can be used.

    loop { /* .. */ }
}

有关完整使用示例,请参阅 examples/global_alloc.rs

为此,必须提供critical-section的实现。

对于简单用例,您可以在cortex-m crate中启用 critical-section-single-core 功能。有关进一步指导,请参阅critical-section的文档。

许可证

在以下任一许可证下获得许可

由您选择。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,应双重许可如上,不得附加任何额外条款或条件。

行为准则

对该crate的贡献是在《Rust行为准则》的条款下组织的,该crate的维护者,libs团队承诺将介入以维护该行为准则。

依赖项

~100KB