什么是分配器以及何时需要使用它们?

P0W*_*P0W 10 c++ stl allocator

在阅读有关C++和标准库的书籍时,我看到频繁引用分配器.

例如,Nicolai Josuttis的C++标准库在最后一章中详细讨论了它们,并且第2项("了解分配器的约定和限制")和11("理解自定义分配器的合法用途")在Scott Meyers的有效的STL是关于它们的使用.

我的问题是,分配器如何代表一个特殊的内存模型?默认的STL内存管理不够吗?何时应该使用分配器?

如果可能,请使用简单的内存模型示例进行说明.

Jer*_*fin 11

分配器抽象分配原始内存,并构造/销毁该内存中的对象.

在大多数情况下,默认的分配器完全没问题.但是,在某些情况下,您可以通过将其替换为其他内容来提高效率.典型的例子是当你需要/想要分配大量非常小的对象时.例如,考虑一个字符串向量,每个字符串可能只有十几个字节左右.普通分配器使用operator new,这可能会对这些小对象施加相当高的开销.创建一个自定义分配器,分配更大的内存块,然后根据需要进行细分,可以节省相当多的内存和时间.