标准C++17
包含一个新的名称空间pmr
,其中包含一组以memory_resource
名称分组的类。
在网上搜索后,我发现很少有关于它的庸俗信息,直接后果是这个问题:
pmr
背后有哪些主要观点,尤其是pmr::memory_resource
?
详细说明问题,我头脑中的一些问号是:
allocator
有什么区别?allocator
运行时? (例如用于测试目的)上下文:
在创建memory pool
分配器的过程中,我找到了有关此命名空间的信息。读取pool_options
或polymorphic_allocator
之类的名字引起了我的注意。
相关问题:
答案 0 :(得分:7)
polymorphic_allocator
旨在让您拥有一个分配器,其行为在运行时动态确定。
创建polymorphic_allocator
的唯一方法是:
默认构造,在这种情况下,它使用std::pmr::get_default_resource()
返回值,即memory_resource*
。
将其传递给memory_resource*
。
从另一个polymorphic_allocator
复制。
因此,polymorphic_allocator
的定制点是创建一个继承自memory_resource
的类,并使用预先声明的{{1在memory_resource
中定义的}}:(std::pmr
un
和synchronized_pool_resource
作为类型,或monotonic_buffer_resource
/ std::pmr::new_delete_resource()
。
假设您要使用与std::pmr::null_memory_resource()
中提供的5种策略不同的策略来分配内存。然后,创建一个继承自std::pmr
的类,并将其传递给使用std::pmr::memory_resource
的容器。