5go*_*der 21 c++ memory-management allocator c++17
C++ 17将为我们带来std::pmr::memory_resource一个分配和释放内存的干净界面.与Allocator概念不同,它就是这样,仅此而已.还有一个将std::pmr::polymorphic_allocator内存资源包装到经典分配器中,因此它可以与现有容器一起使用.
如果我要编写一个针对C++ 17及更高版本的新容器(或其他需要大量内存的),我应该继续针对Allocator概念进行编程,还是直接使用更新更清晰的抽象?
截至目前,我的想法是这样的.
继续使用分配器的原因:
std::pmr::*容器别名也继续使用分配器.std::pmr::polymorphic_allocator,因此分配器接口更通用,可以满足更多客户端的需求.开始使用内存资源而不是分配器的原因:
std::pmr::memory_resource界面是干净和简单.std::pmr::polymorphic_allocator.反过来说比较困难.是否已经有关于如何有效使用新库功能的建议?
Yak*_*ont 10
此时没有.
C++中的分配器目前比以前容易得多.
它们提供pmr和经典分配器支持.
更重要的是,基于pmr的分配多年来一直没有被大量使用.任何弱点都可能会被曝光.
基于快速池的分配器,甚至是固定缓冲区或sbo扩展,可能会注意到虚拟化开销.