C++-windows下的STL是否使用了内存池
在看侯捷的《STL源码剖析》的时候,说sgi版本的STL的内存管理使用了内存池。但我在Visual studio写了测试代码并且去调试跟踪后,发现它就是使用了简单的allocate, deallocate进行内存管理,并没有使用内存池。请问是这样的么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不知道您的目标是什么,纯粹学习,还是因为性能需求没有得到满足?
但我想,你的问题本身就不太对:STL与操作系统基本上没有关系,完全可以在VC++中使用SGI STL 来进行Windows编程。VC++默认的STL库,应该是来自 Rogue Wave 的版本(很多年前的信息了,不知道今天是否准确)。
至于内存池,我只能提到一些相关的东西,希望有帮助:
1、STL库本身是否采用内存池技术,一般是有其考虑的,一些久经考验的STL库性能是可信赖的。
2、如果想知道STL库是否采用了内存池技术,应该继续往下跟踪,在 allocate 和 deallocate 的内部。
3、所有的STL都给了用户自己选择内存池技术的权利,你可以实现自己的 Allocator 来运用内存池——注意到,基本上所有STL容器的最后一个模板参数都是它。
4、如果我要做自己的STL,除了内部使用的红黑树之类数据结构之外,我恐怕不会使用内存池之类的手段——过早优化常常是有害的。
stl容器都可以自主指定内存分配函数
想使用 你自己实现呗 stl本身应该不是内存池实现