#memory-allocator #heap-memory #bare-metal #allocator #raspberry-pi #heap-allocator #ruspiro

nightly sys no-std ruspiro-allocator

为 Raspberry Pi 嵌入式环境提供的简单轻量级堆内存分配器

14 个版本

0.5.0 2020 年 9 月 18 日
0.4.6 2022 年 1 月 2 日
0.4.5 2021 年 4 月 27 日
0.4.2 2020 年 9 月 19 日
0.0.2 2019 年 7 月 30 日

#2114 in 嵌入式开发

Download history 24/week @ 2024-03-31

94 每月下载量
ruspiro-sdk 中使用

MIT/Apache

28KB
312

RusPiRo - 自定义分配器

该 crate 提供了一个自定义的堆内存分配器。如果任何 baremetal crate 使用了来自 alloc crate 的函数和结构,则需要提供一个分配器。然而,这个 crate 没有导出任何公共 API 用于使用。它仅封装了需要链接到二进制文件中的内存分配器。

CI Latest Version Documentation License

先决条件

由于它使用了尚不稳定的功能 alloc_error_handler,因此此 crate 需要 nightly 构建。当此 crate 与 Raspberry Pi 一起使用时,还需要配置并启用 MMU,因为它使用原子操作来提供无锁内存分配。

用法

要使用此 crate,只需将以下依赖项添加到您的 Cargo.toml 文件中

[dependencies]
ruspiro-allocator = "0.4.6"

完成后,将自定义分配器的访问权限添加到您的项目,并将使用添加到您的 crates main rust 文件中

extern crate ruspiro_allocator;

在您定义 ruspiro-allocator crate 的使用的地方,可以像这样使用需要从 alloc crate 进行堆内存分配的动态结构

#[macro_use]
extern crate alloc;
use alloc::vec::*;
use alloc::boxed::*;

fn demo() {
    let mut v: Vec<u32> = vec![10, 20];
    let b: Box<u16> = Box::new(10);
    v.push(12);
}

许可证

Apache License, Version 2.0 (LICENSE-APACHEhttps://apache.ac.cn/licenses/LICENSE-2.0) 或 MIT (LICENSE-MIThttp://opensource.org/licenses/MIT) 下使用,任选其一。

依赖项