2 个稳定版本

1.0.1 2024 年 3 月 21 日
1.0.0 2023 年 9 月 15 日

#142内存管理

Download history 96/week @ 2024-04-01 56/week @ 2024-04-08 32/week @ 2024-04-15 19/week @ 2024-04-22 8/week @ 2024-04-29 17/week @ 2024-05-13 7/week @ 2024-05-20 45/week @ 2024-05-27 37/week @ 2024-06-03 40/week @ 2024-06-10 112/week @ 2024-06-17 113/week @ 2024-06-24 115/week @ 2024-07-01 77/week @ 2024-07-08 64/week @ 2024-07-15

每月 392 次下载

MIT/Apache

28KB
353

许可证

根据以下任一许可证授权:

由您选择。

贡献

除非您明确声明,否则您有意提交的任何贡献均应按上述方式双授权,没有任何附加条款或条件。


lib.rs:

这个分配器就是直截了当的 slabbin

从理论上讲,如果适用,slab 分配器是完美的。它非常快,避免了外部碎片化的问题;但与 bump 分配器不同,它可以释放单个分配,与栈分配器不同,它可以任意顺序释放它们。这里的权衡是所有分配都必须具有相同、固定的布局。

此 crate 中的分配器完全不安全,专门用于需要稳定地址的场景:当你分配一个槽位时,你得到一个指针,直到你释放它(或销毁分配器)之前都有效。例如,使用场景包括链式结构或自引用结构。如果您没有这个需求,您可以考虑使用 slabtyped-arena 等作为安全的替代方案。

Slabs

页板(slab)是指预分配的连续内存块,其中包含槽位(slots)。每个槽位可以是空闲的或者被占用的。页板一开始所有的槽位都是空闲的,每次分配时都会分配新的槽位,直到槽位用完,此时会分配新的页板。被释放的槽位会以链表的形式连接起来。因此,在最佳情况下,分配操作需要3个步骤,在最坏情况下需要大约8个步骤。释放操作始终需要3个步骤。

无运行时依赖