Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在阅读有关 C++ 和标准库的书籍时,我经常看到对分配器的引用。
例如,Nicolai Josuttis 的C++ 标准库在上一章详细讨论了它们,Scott Meyers 的第 10 条(“注意分配器的约定和限制”)和第 11 条(“了解自定义分配器的合法用途”)有效的 STL是关于它们的使用。
我的问题是,分配器如何表示特殊的内存模型?默认的 STL 内存管理还不够吗?什么时候应该使用分配器?
如果可能,请用一个简单的内存模型示例进行说明。
分配器抽象分配原始内存,并在该内存中构造/销毁对象。
在大多数情况下,默认分配器非常好。但是,在某些情况下,您可以通过将其替换为其他东西来提高效率。经典示例是当您需要/想要分配大量非常小的对象时。例如,考虑一个可能只有十几个字节左右的字符串向量。正常的分配器使用operator new,这可能会为这些小对象带来相当高的开销。创建一个自定义分配器来分配更大的内存块,然后根据需要对其进行细分,可以节省相当多的内存和时间。
operator new