我可以使用为某种类型指定的分配器在C ++中分配另一种类型的对象吗?

帕维可洛丁

某些容器A具有Alloc表示分配器类型的模板参数(也是模板)。A指定Alloc类型A::Node

template <template <T> Alloc>
class A {
    struct Node {
    };

    Alloc<Node> allocator_; // the allocator object
};

请原谅我上面可能存在错误的C ++代码。

因此,allocator_.allocate(1)将分配sizeof(A::Node)字节。但是在操作过程中,容器A需要为A :: Node类型以外的某个对象存储一个内存,比如说一个临时字符串(of char)。

从技术角度来看,我可以以一种肮脏的方式使用现有的分配器:

 size_t string_len = 500;
 // how much objects spanned in memory is enough to fit our string?
 size_t equal_size = (string_len / sizeof(Node)) + 1;

 auto mem = allocator_.allocate(equal_size);
 char *p = (char*)mem; // reinterpret cast
 // ... use p to store the string ... memcpy(p, str_src, str_len); //

 // Now p is not needed, so return memory to allocator: 
 allocator_.deallocate(mem, equal_size); 

考虑到我不需要多于1个分配器,并且希望将所有内存管理都放在该分配器上,是否有一种更简单的方法?

所有这些都来自这些需求:

  • 拥有一个可以杀死的分配器,以释放操作过程中出于任何目的分配A的所有(可能是泄漏的)内存
  • 具有不超过1个分配器(包括默认的:: new,:: delete)
莉雅鲁斯

std::allocatorrebind正是出于这种目的而具有成员类型

std::allocator<Node> alloc;

std::allocator<Node>::rebind<char>::other char_alloc;

char * mem = char_alloc.allocate(string_len);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以使用为某种类型指定的分配器在C ++中分配另一种类型的对象吗?

来自分类Dev

使用数据库查找从另一种类型的对象创建一种类型的对象

来自分类Dev

在 C++ 中将一种结构类型分配给另一种类型

来自分类Dev

如何将嵌套对象从一种类型转换为另一种类型

来自分类Dev

如何将一种类型的对象(接口)转换为另一种类型(接口)?

来自分类Dev

如何将一种类型的对象数组转换为另一种类型?

来自分类Dev

使用另一种类型过滤一种类型的键

来自分类Dev

从接口继承的方法可以返回接口中的另一种类型吗?

来自分类Dev

从接口继承的方法可以返回接口中的另一种类型吗?

来自分类Dev

使用 C# 反射将一种类型的对象的值复制到另一种类型的对象

来自分类Dev

一种类型的属性映射到另一种类型的实例

来自分类Dev

将一种类型转换为另一种类型

来自分类Dev

将一种类型的列表转换为另一种类型

来自分类Dev

快速测试一种类型是否与另一种类型兼容

来自分类Dev

将一种类型的 Observable 转换为另一种类型

来自分类Dev

使一种类型成为一种或另一种

来自分类Dev

在运行时将对象转换为另一种类型

来自分类Dev

Scala将对象转换为另一种类型

来自分类Dev

将一种类型的嵌套对象数组映射到另一种类型的对象嵌套数组的通用方法

来自分类Dev

C#-将异步任务从一种类型转换为另一种类型

来自分类Dev

在C ++中将数据从一种类型转换为另一种类型?

来自分类Dev

在c#中将一种类型转换为另一种类型

来自分类Dev

使用已注册的lambda将一种类型转换为另一种类型的类

来自分类Dev

如何检查一种类型是否与另一种/类型提示相符

来自分类Dev

从一种类型转换为另一种类型时的模板类型推导

来自分类Dev

xpath可以从一个元素中选择另一种类型的元素吗?

来自分类Dev

如何将一种类型的CompletableFuture转换为另一种类型?

来自分类Dev

如何处理一种类型的输入而另一种类型的输出

来自分类Dev

创建将一种类型的函数转换为另一种类型的函数

Related 相关文章

  1. 1

    我可以使用为某种类型指定的分配器在C ++中分配另一种类型的对象吗?

  2. 2

    使用数据库查找从另一种类型的对象创建一种类型的对象

  3. 3

    在 C++ 中将一种结构类型分配给另一种类型

  4. 4

    如何将嵌套对象从一种类型转换为另一种类型

  5. 5

    如何将一种类型的对象(接口)转换为另一种类型(接口)?

  6. 6

    如何将一种类型的对象数组转换为另一种类型?

  7. 7

    使用另一种类型过滤一种类型的键

  8. 8

    从接口继承的方法可以返回接口中的另一种类型吗?

  9. 9

    从接口继承的方法可以返回接口中的另一种类型吗?

  10. 10

    使用 C# 反射将一种类型的对象的值复制到另一种类型的对象

  11. 11

    一种类型的属性映射到另一种类型的实例

  12. 12

    将一种类型转换为另一种类型

  13. 13

    将一种类型的列表转换为另一种类型

  14. 14

    快速测试一种类型是否与另一种类型兼容

  15. 15

    将一种类型的 Observable 转换为另一种类型

  16. 16

    使一种类型成为一种或另一种

  17. 17

    在运行时将对象转换为另一种类型

  18. 18

    Scala将对象转换为另一种类型

  19. 19

    将一种类型的嵌套对象数组映射到另一种类型的对象嵌套数组的通用方法

  20. 20

    C#-将异步任务从一种类型转换为另一种类型

  21. 21

    在C ++中将数据从一种类型转换为另一种类型?

  22. 22

    在c#中将一种类型转换为另一种类型

  23. 23

    使用已注册的lambda将一种类型转换为另一种类型的类

  24. 24

    如何检查一种类型是否与另一种/类型提示相符

  25. 25

    从一种类型转换为另一种类型时的模板类型推导

  26. 26

    xpath可以从一个元素中选择另一种类型的元素吗?

  27. 27

    如何将一种类型的CompletableFuture转换为另一种类型?

  28. 28

    如何处理一种类型的输入而另一种类型的输出

  29. 29

    创建将一种类型的函数转换为另一种类型的函数

热门标签

归档