Iva*_*Siu 24 c++ memory stl new-operator allocator
根据C++ Primer第4版,第755页,有一条说明:
现代C++程序通常应该使用allocator类来分配内存.它更安全,更灵活.
我不太明白这个说法.到目前为止,我读过的所有材料都教导用newC++分配内存.本书中展示了向量类如何利用分配器的示例.但是,我想不出其他情况.
任何人都可以帮忙澄清这个陈述吗?并举个更多例子?我应该何时使用分配器以及何时使用new?谢谢!
jwd*_*jwd 41
对于一般编程,是的,你应该使用new和delete.
但是,如果你正在写一个图书馆,你不应该!我没有你的教科书,但我想它正在编写库代码的上下文中讨论分配器.
库的用户可能想要精确控制从哪里分配的内容.如果所有库的分配都经过new并且delete用户将无法获得细粒度的控制级别.
所有STL容器都使用可选的allocator模板参数.然后容器将使用该分配器来满足其内部存储器需求.默认情况下,如果省略分配器,它将使用std::allocator哪个使用new和delete(特别是::operator new(size_t)和::operator delete(void*)).
这样,该容器的用户可以根据需要控制分配内存的位置.
实现与STL一起使用的自定义分配器的示例,以及解释:使用STL的自定义池分配器提高性能
附注:分配器的STL方法在几个方面是非最优的.我建议阅读更好的分配器模型,以讨论其中的一些问题.
| 归档时间: |
|
| 查看次数: |
11393 次 |
| 最近记录: |