内存池VC实现 VC十年技术群聊天笔记

来源:互联网 发布:自然搜索排名优化 编辑:程序博客网 时间:2024/05/22 14:38

以下内容摘自VC十年技术群, 欢迎内存池技术研究人员进本群, 共同研究技术.

 

也许以下的代码实现, 并不完美的, 也不是优秀, 但能解决实际问题, 可以证明是有效果的.
无论如何, 也是提供了一个非常好的参考.

以此鼓励不断为性能为内存使用烦恼的VC技术人员.

 

 本文出自: 阿呆 http://blog.csdn.net/davemin
宣传: VC 十年技术群 30107096 欢迎高手加入,本群只研究VC

 

(2009-10-16 11:06:01)   张鹏-宁波(52401692)
命中率90%多,呵呵。目前看上去运行可以到一个月左右,比较稳定,哈哈
(2009-10-16 11:06:06)   张鹏-宁波(52401692)
原来只能运行2天左右

 

(2009-10-16 11:08:12)   张鹏-宁波(52401692)
其实我那个思路就更菜了,呵呵。但效果还很不错,就是固定了几个大小,16、32、64、128 ……

 

(2009-10-16 11:11:03)   阿呆 -假装高手(40133435)
固定了几个大小,16、32、64、128 …… 这样的设计,其实是大多小型内存池实现的基本方法.
(2009-10-16 11:11:19)   阿呆 -假装高手(40133435)
stl 也是如此.
(2009-10-16 11:11:32)   阿呆 -假装高手(40133435)
不管怎么实现,关键是管不管用. 
(2009-10-16 11:13:17)   ...(115963176)
说的这样HAPPY,代码贴出来
大家学习一下啊
 

(2009-10-16 11:16:57)   张鹏-宁波(52401692)

// TODO:
// 1、设置每个Pool的单独的上限
// 2、如果总的内存占用太多了,要尽快释放

 

 本文出自: 阿呆 http://blog.csdn.net/davemin
宣传: VC 十年技术群 30107096 欢迎高手加入,本群只研究VC

(2009-10-16 11:18:45)   张鹏-宁波(52401692)

 

 

 

 

(2009-10-16 11:18:57)   张鹏-宁波(52401692)

 

 
(2009-10-16 11:19:04)   张鹏-宁波(52401692)
就这些了,呵呵,欢迎拍砖
(2009-10-16 11:19:58)   张鹏-宁波(52401692)
用法很简单,呵呵,就是将普通的new改为调用 CMemory的New, delete改为调用 CMemory的Delete
(2009-10-16 11:20:23)   张鹏-宁波(52401692)
CMemory中管理好多个小池子,分大小的,它会找到合适的池子去New和Delete
(2009-10-16 11:21:41)   张鹏-宁波(52401692)
如果池子中没有空位,就真的new,否则就用一个空位,释放时也不真释放,只是标记一下,放到池子里面。根据我程序的特性,我用了这么多大小的池子,好像是16个池子,管理的内存块大小分别是: