#智能指针 #内存 #密集 # #内存分配器 #堆分配器

dense-heap

此代码定义了一个名为 DHeap(密集堆)的自定义分配器和名为 DBox(密集盒)的智能指针。 DHeap 负责管理内存分配,而 DBox 提供了一种访问和管理存储在 DHeap 中的数据的方式。使用此自定义分配器的主要优势是它通过密集打包分配的内存来最小化内存碎片。代码还包括测试用例以演示 DHeapDBox 的功能。

1个不稳定版本

0.1.2 2023年5月1日
0.1.1 2023年5月1日
0.1.0 2023年5月1日

内存管理 中排名第 561

每月下载 24

MIT/Apache

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在调整大小后始终有效,但那些盒子中的值的引用可能不会。

无运行时依赖