allocator
由于直接用new delete来管理内存可能过于缓慢,因此要引入统一的内存管理,也就是allocator
在c++17中引入了pmr。std::pmr::polymorphic_allocator
其构造参数为一个memory_resouce的指针。
一般来说总共有三种memory_resouce类型。
sync,unsync和monotonic。
分别是线程同步,线程不同步,和只分配不析构(一般用于栈上快速内存)。
其构造函数可以指定上游资源空间,默认是new_delete_resouce,也就是使用new和delete来直接分配内存,也可以是其他的,当这个内存资源耗尽后就会将相关内存管理的事情委托给上游内存。而为了限制其分配内存,也可以null_memory_resource,当内存耗尽后就会直接报错,而不使用new/delete。
也可以使用get/set_default_resouce来设置全局的默认内存。
每个的构造函数还有很多其他设置。
pmr作用域下的std数据结构都是使用了pmr的allocator来分配。
allocator
https://lhish.github.io/project/hide/allocator/