c++ - 多类型分配器设计

标签 c++ c++11

我正在开发动态语言的运行时库,更具体地说是它的内存分配。

我将使用垃圾收集,但我认为如果需要的话,允许用户使用自己的内存分配器会很好。然而,查看standard c++ allocator后接口(interface),我没有看到任何方法来拥有通用分配器(除了在 char 上进行模板化,但这看起来很hacky)。

  • 使用标准分配器接口(interface)是个好主意吗?
  • 如果是,分配多种类型的可能设计是什么?

注意:我的库使用 C++11,所以我谈论的是"new"分配器接口(interface)。

最佳答案

正如@Cubbi所说,看看allocator::rebind 。分配器的实际类型参数几乎无关紧要。标准容器使用allocator::rebind更改为他们实际需要的类型。特别是,关联容器需要分配保存其自身数据以及容器名义上保存的数据对象的节点。所以allocator::rebind用于获取 allocator<Node<T>>来自allocator<T> .

关于c++ - 多类型分配器设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13275070/

相关文章:

c++ - Opencv 图像包装器 cpp

c++ - 如何在触发 QObject::connect 的代码中查明调用的位置:无法在 Qt5 中对类型的参数进行排队?

c++ - 返回作为 shared_ptr 的成员变量是否安全

c++ - 使用 C++20 比较 std::variant 和 int <=> 不是常量表达式

c++ - (C++) std::istringstream 从字符串读取最多 6 位数字到 double

c++ - 避免 C++11 原始字符串文字中的第一个换行符?

C++ 不匹配运算符 <<

c++ - 记录重新抛出错误的函数

c++ - 使用 mouseMoveEvent 限制 QGraphicsItem 的移动

c++ - std chrono 时间同步