Stdext Allocators Graph

这两幅图很棒,具参考意义,转帖下。出处:http://blog.krzycube.net/stdext-allocators-graph/

---

从2006年到2009年初,虽然WINX的作者(@xushiwei)大多时间就在我身边,不过我一直对这东西兴趣缺缺。当然我的懒惰占了95%以上的原因,另外1%是因为一直在做后台,所以不怎么会想起WINX,即便偶尔写个小工具我也会对比以后放弃ManyFunctionClass选择WTL。剩下那4%嘛,这东西缺乏文档一直让我耿耿于怀,而作者号称由于他没有漂亮的秘书mm,所以一直没空弄文档。不过WINX代码库并不仅仅是GUI界面库那么单调,其中还包含了一个彪悍的库stdext,不管写后台还是前端,这东西都是一等利器。(stdext中allocators相关的代码已经进入BOOST的Sandbox,因此名字空间里会看到BOOST相关的信息)

如今我跟它的作者再聚首一起干活,大量使用stdext,不过这东西还是没文档,注释也基本没有,虽说有活字典在身边,不过还是挺让我抑郁的。考虑到招漂亮秘书一时半会儿的是实现不了了,只好自己来造文档,从号称最核心最有价值的地方开始,内存管理 — Allocators关系图.

图1:普通的SystemAlloc Policy版本, SystemAlloc本身是对标准分配器的封装,但在这里组合使用时,表现得更像是个Policy。

图2:BlockPool Policy版本,BlockPool实现上是来自SystemAlloc的组合

typedefblock_alloc<NS_BOOST_MEMORY_POLICY::sys>block_pool;

由它表现为下面其他组合出来的Allocators的Policy。有了BlockPool的最大优势在于,allocators可以是scoped了。

这两个图已经添加至Stdext的代码库中,可以在此目录下看到。更多的关于这些分配器的资料,可以参见作者blog里的内存管理系列。不过由于版本变化,那些文章实际上已经不与最新代码对应,只是表意。

你可能感兴趣的:(.net,Blog)