6个版本 (1个稳定版)
1.0.0 | 2019年11月23日 |
---|---|
0.1.4 | 2019年3月9日 |
0.1.1 | 2019年1月21日 |
#352 in 内存管理
用于 cryptobox
17KB
186 行
MAProper
此crate提供了安全覆盖内存分配器 MAProper
🧹
什么是 MAProper
MAProper
是 std::alloc::System
的扩展,确保在分配内存释放前,使用 memset_s
/SecureZeroMemory
/explicit_bzero
/explicit_memset
中的一种来擦除分配的内存。
什么是 MAProper
的作用
MAProper
在处理大量敏感数据时非常有用:因为动态分配类型如 Vec
或 String
的内存管理是透明的,你实际上没有真正可靠地跟踪和擦除它们的敏感内容的机会。
然而,它们都使用全局分配器——所以所有路径都通向罗马(在这个例子中是全局分配器的 alloc
和 dealloc
函数)——而 MAProper
就坐在这里等待处理废弃的内存。
使用 MAProper
作为全局分配器(示例)
#[global_allocator]
static MA_PROPER: ma_proper::MAProper = ma_proper::MAProper;
fn main() {
// This `Vec` will allocate memory through `MA_PROPER` above
let mut v = Vec::new();
v.push(1);
}
重要
请注意,MAProper
只擦除正确释放的内存。这特别意味着
- 栈项不会被此分配器 擦除 - 要擦除栈内存,我们公开了
MAProper::erase_slice
和MAProper::erase_ptr<T>
,以便您可以在需要时手动擦除它们 - 根据您的panic-policy和您的
Rc
/Arc
使用(保留周期),析构函数(以及因此分配器)可能永远不会被调用
无运行时依赖
~180KB