#memory #sandbox #data #structures #customizable #detect #able

nightly luos_memory_sandbox

可定制的内存沙盒,能够在写入数据结构时检测内存问题

2个版本

0.0.1 2018年11月11日
0.0.0 2018年11月10日

#21 in #able

WTFPL 许可证

17KB
335

Luo的内存沙盒

一个以调试为导向的内存沙盒。

Luo的内存沙盒提供了一种创建完全自定义的线性内存缓冲区的方法。通过提供自定义内存分配器,它可以在编写数据结构时用于查找内存泄漏和错误。


lib.rs:

有用的沙盒,用于测试内存、网络(待办)和文件系统(待办),这对于开发数据结构很有用。

内存沙盒

内存沙盒部分是为调试管理内存所有权的内存结构而设计的。为此,它提供了各种可定制的分配器。本部分有4个结构。

LuosAlloc 是一个通用分配器,它提供了函数 inner 来查看已分配的内容,并且通过在创建时使用 new_filled_with,我们可以轻松地区分正常或泄漏的字节。它通过实现 Alloc 特性来适配Rust分配API。

LuosMustReplaceAllocLuosAlloc 类似,也适合Rust分配API,但每次它 realloc 时,都确保新内存段不是从旧内存段扩展出来的,而是始终尝试为新内存段分配。这在编写数据结构时检测逻辑错误很有用。

LuosGlobalAlloc 也能够分配,但它实现了 GlobalAlloc 特性。通过将其用作全局分配器,我们可以用完整的Rust最小运行时调试我们的程序。

LuosMemory 是一个 16-KiB 线性缓冲区,用于此crate中提供的所有分配器。当我们从此crate构建分配器时,我们必须使用 LuosMemory::new() 创建一个 LuosMemory 缓冲区,并且我们可以使用 let mut a = LuosAlloc::new(LuosMemory::new()) 创建分配器。

无运行时依赖