1个不稳定版本
0.1.0 | 2022年8月22日 |
---|
#442 在 内存管理
每月下载量238
140KB
2.5K SLoC
acid_alloc
裸机分配器。
该crate提供了适用于裸机或与操作系统分配设施(如mmap(2)/
brk(2)
)配合使用的分配器。
以下分配器类型可用
Buddy
,二叉伙伴分配器. O(log2 levels)最坏情况下的分配和释放。支持通过2的幂次分裂和合并块。适用于周期性中等或大型分配。Bump
,Bump分配器. O(1)分配。分配非常快,在分配布局方面非常灵活,但不能释放单个项目。适用于永远不会释放或一次性大量释放的分配。Slab
,Slab分配器. O(1)分配和释放。所有分配的块大小相同,这使得该分配器在分配许多大小相似的物体时是一个不错的选择。
功能
此crate提供的所有分配器都在#![no_std]
环境中可用。启用功能标志时提供额外的功能。
标志 | 默认? | 需要nightly版本? | 描述 |
---|---|---|---|
sptr |
是 | 否 | 使用sptr polyfill来实现严格来源。 |
不稳定 |
否 | 是 | 公开由实现不稳定Allocator trait的分配器支持的构造函数,并启用nightly-only Rust功能的内部使用。取代sptr |
alloc |
否 | 否 | 公开由全局分配器支持的分配器支持的构造函数。 |
致谢
本包包含稳定兼容的polyfills,用于实现多个不稳定的标准库API。以下列出了这些功能及其作者和维护者:
alloc_layout_extra
,作者:Amanieu d'Antrasint_log
,作者:Yoshua Wuytsstrict_provenance
,作者:Aria Beingessner (Gankra)
此包还依赖于sptr
(亦由Gankra编写)以在稳定Rust中重现严格来源的正常指针。
如果我对任何工作的归属有误,或者遗漏了某个功能的贡献者,请提出问题!
许可证
在以下任一许可证下许可:
- Apache License,版本2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确说明,否则根据Apache-2.0许可证定义的,你有意提交给作品的所有贡献都应按上述方式双许可,不附加任何额外条款或条件。