2013-07-25 34 views
8

在阅读有关C++和标准库的书籍时,我经常看到分配器的引用。什么是分配器,何时需要它们的使用?

例如,尼古拉约祖蒂斯的的C++标准库讨论他们在细节在最后一章,而这两个项目10(“知道分配器公约&限制‘)和11(’了解合法定制的应用分配器“)在Scott Meyers的有效的STL是关于它们的使用。

我的问题是,分配器如何表示特殊的内存模型?缺省的STL内存管理不够?何时应该使用分配器?

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

+0

可能相关:[自定义C++ STL分配器的强大示例?](http://stackoverflow.com/q/826569) –

回答

8

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

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

相关问题