#alloc #ffi #嵌入式

nightly 无std cheapalloc

提供全局分配器,将其连接到libc的malloc/free,以使用现有的CRT堆栈

1 个不稳定版本

0.1.0 2020年10月30日

#342无标准库

Apache-2.0/MIT

6KB

cheapalloc

这是一个简单的crate,提供使用libc malloc & free的GlobalAllocator,因此使用现有的C堆栈。(因此得名:“C堆栈分配”)

预期用途是在通过C的FFI使用Rust库时启用堆相关特性,例如Box、alloc::vec::Vec、alloc::string::String等,以便它们可以使用现有的C堆栈。

此crate的原始使命是使Rust能够用于在微控制器上制作嵌入式应用的静态库。

依赖项

由于使用了#![feature(lang_items)],需要nightly编译器。

使用此crate

将crate作为依赖项添加,全局分配器应该会提供。
您需要修改您的链接系统

TODO:链接器说明,例如 --print-sysroot-Wl,-lc,等等

注意:此crate可以可选地定义一个超出内存的panic_halt / oom处理程序,通过provide_oom功能。这目前专门针对Cortex-M架构实现,目的是减轻用户/库需要自己包含此块的需要。

示例

TODO:包含一个示例,或在单独的GitHub仓库中提供一个。serde等非常强大的东西可以在Cortex-M微控制器上运行!

陷阱

超出此crate的范围,但:将Rust静态库链接到现有的C程序确实会因Rust使用compiler-builtins而出现一些问题。

有关讨论 此处

许可证

此模板的许可证是以下之一

根据您的选择。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,将如上双许可,无需任何额外条款或条件。

依赖项

~180KB