gpt4 book ai didi

c++ - `memory_resource` 的用途和用途是什么?

转载 作者:IT老高 更新时间:2023-10-28 22:15:03 24 4
gpt4 key购买 nike

标准 C++17 包含一个新的命名空间 pmr,其中包括一组以 memory_resource 的名称分组的类。

在网上搜了一下,发现很少有关于它的低俗信息,直接结果就是这个问题:

pmr,尤其是pmr::memory_resource背后的主要思想是什么?


把问题详细一点,我脑子里的一些问号是:

  • 它带来了什么新的东西,或者它解决了哪些限制?
  • allocator有什么区别?
  • 多态是否意味着可以选择运行时提供给容器构造函数的 allocator? (例如用于测试目的)
  • 它对实现内存池或其他内存管理方案有帮助吗?

上下文:

为了创建 memory pool 分配器,我找到了有关此命名空间的信息。阅读像 pool_optionspolymorphic_allocator 这样的名称引起了我的注意。


相关问题:

polymorphic_allocator: when and why should I use it?

最佳答案

polymorphic_allocator 旨在让您拥有一个其行为在运行时动态确定的分配器。

创建polymorphic_allocator的唯一方法是:

  1. 默认构造,此时使用std::pmr::get_default_resource()返回值,即memory_resource*

  2. 传递一个memory_resource*

  3. 从另一个 polymorphic_allocator 复制。

因此,polymorphic_allocator 的定制点是创建一个继承自 memory_resource 的类并实现其方法,使用其中一种在 std::pmr 中定义的预先声明的 memory_resource:(un)synchronized_pool_resource monotonic_buffer_resource 作为类型,或 std::pmr::new_delete_resource()/std::pmr::null_memory_resource()

假设您希望使用不同于 std::pmr 中提供的 5 的策略分配内存。然后创建一个继承自 std::pmr::memory_resource 的类,并将其传递给使用 polymorphic_allocator 的容器。

关于c++ - `memory_resource` 的用途和用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44799321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com