微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++ 分配器来存储不同类型的对象

如何解决C++ 分配器来存储不同类型的对象

我有一堆由 unique_ptrs 包裹的对象。
每个对象都有自己的类型。
我想创建一种内存池来存储所有这些对象,以避免为每个最后一个对象分配堆。像这样:

分配器分配器(1024); // 应该是可扩展的
unique_ptr a = allocator.allocateAndWrapToUPtr();
unique_ptr b = allocator.allocateAndWrapToUPtr();
C* c = allocator.allocate();

据我所知,分配器被指定为
模板
类 MyAllocator;
因此它们只能存储一种类型的对象。

是否可以实现“多类型”分配器?

解决方法

不可能在项目的任何地方都使用一个分配器。 动态分配器示例可以在 dmitrysoshnikov.com/compilers/writing-a-pool-allocator 中找到,它允许使用 unique_ptrs 解决初始问题。
但它不符合 stl,因此不能用于例如集合。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。