c++ - 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 不分配)。
此外,如果他可以定制策略以使用全局新存储或预分配存储或前两个选项的混合,那将是很好的。
解决方案
推荐阅读
- sql - 如何从sql server中的两个select查询中消除重复数据
- html - (HTML) 在其他文件夹中链接 CSS 样式表但同一目录不起作用
- regex - 工作正则表达式在 laravel 验证中不起作用
- javascript - 在flutter中使用gamesparks typescript/javascript库
- ios - 如何将数据传递给类中的双精度数组
- java - GWT 从 2.7.0 升级。到 2.8.2(或 2.8.1)不工作
- c# - 如何在 C# 中的 DataGrid 中使自定义集合可编辑
- php - PHP 会话在 Angular 6 项目中不起作用
- spring-boot - spring-boot-2.0.6 freemarker mvc 两次查看打印请求模型值
- powershell - 用系统时间戳或任意时间戳替换特定于单词的时间戳