8 releases

0.3.3 Dec 20, 2024
0.3.2 Dec 19, 2024
0.3.0 Nov 22, 2024
0.2.0 Nov 13, 2024
0.1.0 Aug 22, 2023

#315 in Memory management

Download history 19/week @ 2024-09-16 18/week @ 2024-09-23 8/week @ 2024-09-30 1/week @ 2024-10-07 4/week @ 2024-10-14 2/week @ 2024-10-21 4/week @ 2024-11-04 126/week @ 2024-11-11 163/week @ 2024-11-18 32/week @ 2024-11-25 16/week @ 2024-12-02 21/week @ 2024-12-09 403/week @ 2024-12-16

425 downloads per month
Used in 3 crates

MIT/Apache

96KB
2.5K SLoC

hipool

内存池提供高效的内存分配策略。适合于基于生命周期进行内存管理的业务场景.

内存池只有内存的分配接口,没有释放接口,所有内存都在内存池生命周期结束的时候统一释放.

C/C++中内存池至少存在以下两个挑战:

  1. 如何保证内存池分配的内存不会在内存池销毁后还在使用? 引用计数机制可以解决,但增大开销,降低收益.
  2. 如何保证内存池只在单线程下使用?增加并发保护,但增大开销,降低收益.

以上两个问题在RUST中可以在编译期间解决,安全又高效。

  1. 基于生命周期管理机制,可以保证内存池生命期一定大于其分配的内存的生命期.
  2. 内存池不支持Sync,限定只在单线程下使用.

版本变更说明

  1. v0.3.3

v0.3.2 错误注释掉#![no_std].

  1. v0.3.2

Boxed/Arc/Rc: 都新增to_any/downcast/upcast接口 Arc/Rc: 新增cast_unchecked/as_ptr接口.

  1. v0.3.1

支持mingw, target_os = "windows", target_env = "gnu"

  1. v0.3.0

GenricAlloc/Boxed/Arc/Rc的分配接口变化,消除MaybeUninit,从接口上保证安全性. Arc/Rc接口变化,新增从Boxed构建.

Dependencies

~33KB