#heap-allocator #heap #allocator #no-std

no-std trallocator

一个用于包装现有分配器和跟踪堆使用的no_std库

3个不稳定版本

0.2.1 2023年11月8日
0.2.0 2023年3月22日
0.1.0 2023年3月14日

#430嵌入式开发

每月 26次下载
用于 lorawan

MIT/Apache

8KB
97

Trallocator

crates.io documentation

一个简单的no_std库,用于包装现有分配器和跟踪堆使用情况。主要用途是跟踪嵌入式系统中的堆使用情况

使用方法

只需将现有的分配器包装在Trallocator中。

示例

使用另一个分配器,这里我们使用系统分配器

extern crate alloc;
extern crate std;
use alloc::vec::Vec;
use std::alloc::System;

use trallocator::Trallocator;

#[global_allocator]
static ALLOCATOR: Trallocator<System> = Trallocator::new(System);
fn main() {
    let init = ALLOCATOR.usage();
    let mut vec: Vec<u8> = Vec::new();
    vec.reserve_exact(32);
    assert_eq!(ALLOCATOR.usage(), init+32);
}

使用分配器API

#![feature(allocator_api)]
extern crate alloc;
extern crate std;
use alloc::vec::Vec;
use std::alloc::System;

use trallocator::Trallocator;

let tralloc: Trallocator<System> = Trallocator::new(System);
assert_eq!(tralloc.usage(), 0);
let mut vec: Vec<u8, _> = Vec::new_in(&tralloc);
vec.reserve_exact(32);
assert_eq!(tralloc.usage(), 32);

许可证

根据以下之一获得许可:

任选其一。

贡献

除非你明确声明,否则根据Apache-2.0许可证定义,你故意提交以包含在作品中的任何贡献都应双许可如上所述,没有任何额外的条款或条件。

无运行时依赖

特性