1个不稳定版本
0.1.2 | 2023年5月1日 |
---|---|
0.1.1 |
|
0.1.0 |
|
在 内存管理 中排名第 561
每月下载 24 次
17KB
209 行
DHeap (密集堆) 分配器和 DBox (密集盒) 智能指针
本项目提供了一个名为 DHeap
的自定义内存分配器和一个名为 DBox
的智能指针。此分配器的主要目标是通过对分配的内存进行密集打包来最小化内存碎片。
功能
- 最小化内存碎片
- 最小化均匀大小分配的内存使用
- 智能指针
DBox
,便于内存管理
文档
文档可以在 此处 找到。
使用方法
要使用此自定义分配器,首先创建一个具有所需容量的 DHeap
实例
let heap: DHeap<i32> = DHeap::with_capacity(16);
要在 DHeap
中分配内存,您可以使用 safe_new
方法
let dbox = heap.safe_new(42).unwrap();
DBox
智能指针用于访问和管理存储在 DHeap
中的数据。您可以通过取消引用 DBox
来访问底层数据
assert_eq!(*dbox, 42);
当 DBox
智能指针超出作用域或调用 into_inner
方法时,它将自动释放内存
let inner_val = dbox.into_inner();
示例
使用 DHeap 分配器和 DBox 智能指针的基本示例可以在源代码中的测试模块中找到。
安全性
代码使用不安全的Rust特性来优化性能,但这些特性有限,并附带解释。使用DBox
确保内存管理是安全的,并防止双重释放或使用后释放等问题。然而,在使用unsafe_new
方法时要小心,因为如果底层向量需要调整大小,它可能会使现有引用失效。DBox在调整大小后始终有效,但那些盒子中的值的引用可能不会。