首页 > 解决方案 > std::pmr 或 boost 是否具有适用于分配大小固定的循环/环形缓冲区的分配器?

问题描述

据我了解,boost 和 pmr 都有一个“bump”分配器,它适用于许多小型分配,您可以在最后一次将它们全部删除(当调用 delete 并且 alloc 是一个简单的指针时,它实际上并不需要释放增加所以它非常快)。

我想知道是否有一个分配器费心记住空闲块,但它针对分配的确切大小进行了优化。

就像是

block_allocator<4096>// only use this allocator to allocate 4096 bytes, anything smaller or larger will fail.

换句话说,他不需要处理多个大小类,但是如果你执行 new new new(3 次是一个例子)然后 delete delete delete 因为他重用了释放的块(假设他有空间分配 3 个块)。

注意:我知道一些 std:: 容器不只是分配 T 并且这个分配器不适合这个。我只想用它来创建许多unique_ptr<T, alloc<sizeof<T>>(T ctor 不分配)。

此外,如果他可以定制策略以使用全局新存储或预分配存储或前两个选项的混合,那将是很好的。

标签: c++c++17allocatorc++pmr

解决方案


推荐阅读