我正在开发动态语言的运行时库,更具体地说是它的内存分配。
我将使用垃圾收集,但我认为如果需要的话,允许用户使用自己的内存分配器会很好。然而,查看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/