C++对象局部内存分配器

2023-02-03  本文已影响0人  谭英智

内存管理需要解决的问题

C++17 pmr内存局部分配器

pmr提供以下三种内存分配策略

monotonic buffer

多次申请,一次释放

monotonic通过多次申请多个连续的内存块提供给容器或者对象

每次申请时,只提供未被分配过的内区片段

已经分配过和被回收到buffer的内存,不会被再次分配出去

在pmr数据结构析构时,一次性,把所有内存释放

它是非线程安全的

比较浪费内存

但是提供非常高的性能

和提供非常高的局部性

unsynchronized pool

通过slab来管理内存块

回收后的内存可以再次分配出去

非线程安全

高性能

局部性不如monotonic

节省内存

pmr析构时,归还内存

synchronized pool

与unsynchronized pool类似

但它是线程安全的

C++17 前的内存局部分配器

上一篇 下一篇

猜你喜欢

热点阅读