9次发布
使用旧的Rust 2015
0.2.7 | 2020年12月9日 |
---|---|
0.2.6 | 2019年2月28日 |
0.2.5 | 2018年12月5日 |
0.2.4 | 2018年11月7日 |
0.1.0 | 2017年10月27日 |
#278 在 内存管理
505 每月下载次数
用于 phosphor
93KB
2K SLoC
xalloc
外部内存的动态子分配器(例如,Vulkan设备内存)。
提供的算法
通用
名称 | 时间复杂度 | 空间复杂度 |
---|---|---|
TLSF(二级分割适应) | O(1) |
O(N+对数大小) |
空闲空间位图 | O(大小) |
O(大小) |
专用
名称 | 时间复杂度 | 空间复杂度 |
---|---|---|
环形缓冲区 | O(1) |
O(N) |
(size
: 通过分配单元数量测量的堆大小,N
: 分配次数)
示例
use xalloc::{SysTlsf, SysTlsfRegion};
let mut tlsf = xalloc::SysTlsf::new(8u32);
// Allocate regions
let alloc1: (SysTlsfRegion, u32) = tlsf.alloc(4).unwrap();
let alloc2: (SysTlsfRegion, u32) = tlsf.alloc(4).unwrap();
let (region1, offset1) = alloc1;
let (region2, offset2) = alloc2;
println!("allocated #1: {:?}", (®ion1, offset1));
println!("allocated #2: {:?}", (®ion2, offset2));
// Deallocate a region
tlsf.dealloc(region1).unwrap();
// Now we can allocate again
tlsf.alloc(2).unwrap();
tlsf.alloc(2).unwrap();
特性标志
nightly
— 启用目前需要Nightly Rust编译器的优化。由于在Rust 1.25中对NonNull
的稳定化,此标志现在不再使用。
许可证:MIT
依赖关系
~485KB