免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: phoneix
打印 上一主题 下一主题

young library 的轻量级内存池设计与实现 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-06-09 09:44 |只看该作者
原帖由 benlan 于 2007-6-7 13:25 发表
能否加个内存泄露检测上去,也许在嵌入式里更用的上
原理是:
分配时把  adress和size记下来,放到一个hash等进去
free的时候,把此地址从hash里拿掉
然后在查看有无泄露时,使用dump类的函数把现在所有未fre ...



当时写了个 pool_print 就是想调试的时候用的,在 test_dblnklst.c 测试程序有它的使用方法,可以输出整个内存池的状态。实际上,
由于使用的是位映射的方式,所以直接判断位映射字是否等于 0 就可以知道是否有内存泄露了。不过功能毕竟太过简单了,我会在后面加上dump 函数的,谢谢你的建议。

论坛徽章:
0
22 [报告]
发表于 2007-06-09 12:52 |只看该作者
大家可以看看csdn的一期杂志叫调试还是测试,里面有jjhou和周伟明的两篇文章,一个就是详细讲内存池包括和malloc函数的比较,还有一篇就是讲解内存泄漏检测的

论坛徽章:
0
23 [报告]
发表于 2007-06-09 15:37 |只看该作者
原帖由 phoneix 于 2007-5-31 20:20 发表
这个我没有测试过,在不同的平台下结果不一样,对我来讲没有什么意义。我写这个内存池主要的一个目的是在嵌入式系统开发时使用,在嵌入式系统下很多都不支持malloc和free,如果有了这个内存池,那么只需要在底层实 ...


不知针对的什么嵌入式系统? 现在很少有不支持malloc 和free的,
以前在学校学单片机时写的一大堆汇编代码,现在用C51只用很少的代码就可以实现,
而且结构比较清晰,唉,我上学里怎么没碰上这种好事.

论坛徽章:
0
24 [报告]
发表于 2007-06-09 19:01 |只看该作者
51其实没有必要,本身寻址空间就那么大一点,直接在程序里划一块数组更简单一些,但是DSP、ARM这些比较流行的嵌入式平台可能就用的上了。

论坛徽章:
0
25 [报告]
发表于 2007-06-10 16:54 |只看该作者
原帖由 phoneix 于 2007-6-9 09:44 发表



当时写了个 pool_print 就是想调试的时候用的,在 test_dblnklst.c 测试程序有它的使用方法,可以输出整个内存池的状态。实际上,
由于使用的是位映射的方式,所以直接判断位映射字是否等于 0 就可以知道是 ...


漏说了一点,就是在malloc的时候,把 __function__ __line__ 传进来的,然后在dump时,会dump出function和line,这样子查起来就比较能直接定位到哪里泄露了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP