看了一下sgi stl allocator的源码。 在3.3.3的里面,还是malloc和pool的两层结构,号称效率更好,避免碎片 在3.3.6里面,又变回对operator new的简单封装了,想用pool啥的,必须显示声明了 这是为啥啊?仅仅是为了符合标准实现吗? 又大牛了解这段历史不?
不明白为什么不能引用stl的一些函数比如mismatch, power函数, slist类。。。,下面拿power函数举个例子麻烦大家给我看看
代码很简单如下:
#include
代码和测试程序见附件,个人认为很巧妙,适合小对象的频繁分配/释放,效率比之单纯的使用malloc/free提高了很多 不知道还有哪些优秀的内存池实现算法可以参考的? BTW:这份代码不是我写的,网上搜索所得,作者模拟了sgi stl的内存池算法,我自己做了一些整理和注释,向作者致敬. [ 本帖最后由 converse 于 2008-4-1 19:55 编辑 ]
位置:
.../bits/stl_alloc.h
函数: [code]
template
cstl是使用C语言编写的一个通用的数据结构和常用的算法库,它模忙sgi stl的接口和实现,支持vector,list,deque等等常用的数据结构,同时还支持排序,查找,划分等常用的算法,此外cstl也包含迭代器的类型,它作为容器和算法之间的桥梁。cstl为C语言编程中的数据管理提供了便利。 在使用C语言编程的过程中,很多工作都是在管理数据,很多时候我都是在一遍又一遍的开发通用的数据结构如list,我想C语言中如果有一个像的stl那样...
本帖最后由 Frahm 于 2013-01-26 02:48 编辑 我在看到侯捷的那本《stl 源码剖析》中allocator一章节,对它的实现思路基本了解了,也就是分两级,我主要对第二级,也就是默认的那个allocator的实现有些疑问, 大概说来它是这样的:对于较小的内存分配请求,采用预分配的链表的形式,以8的倍数大小为单位的内存区块(8,16,24,...128 ),每种大小都是一个链表,然后用一个数组把这些链表的头结点存起来,请求内存小于128bytes时就从...
我在看hashtable的内部实现机制, 参考了一下侯捷的<stl源码剖析>,里面5.7.5当中,关于"重建表格"的一节,有下面的代码。 但是我感觉棕色方框处的代码会导致两个元素循环互指啊,大侠们看看: 给个解释吧
本帖最后由 llslls_007 于 2010-07-06 16:33 编辑 想看 dynamic_cast 等源代码 ,查看 操作系统自带的typeinfo 又没有dynamic_cast 的定义 去哪里看这些东东呢