3个不稳定版本
0.5.1 | 2023年11月5日 |
---|---|
0.5.0 | 2022年12月8日 |
0.0.0 | 2022年12月6日 |
42 在 内存管理 中排名
每月下载量 13,039
用于 9 个crate(7 个直接使用)
15KB
77 行
嵌入式-分配
嵌入式系统的堆分配器。
请注意,将此用作全局分配器需要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(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,应双重许可如上,不得附加任何额外条款或条件。
行为准则
对该crate的贡献是在《Rust行为准则》的条款下组织的,该crate的维护者,libs团队承诺将介入以维护该行为准则。
依赖项
~100KB