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/
作者
lhy
发布于
2025年8月16日
许可协议