免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2799 | 回复: 3

[C] 内存泄露问题 [复制链接]

论坛徽章:
0
发表于 2013-11-29 16:34 |显示全部楼层
程序结构,主进程不退出,N个子进程,每个子进程处理1000笔交易后,退出,然后主进程获取到子进程退出后,便会再创建一个子进程,进行交易的处理。

  1. create_child:
  2.         create_child:
  3.         for (iIndex = 0; iIndex < need_chld_nums; iIndex++)
  4.         {
  5.                 ....
  6.                 fork();
  7.                 .....
  8.         }
  9. ......
  10. while (wait(NULL) != -1 || errno != ECHILD);
  11. {
  12.         COMLOG("子进程退出, 重新创建子进程");
  13.         need_chld_nums = 1;
  14.         /*
  15.         km++;
  16.         if (km == 3)
  17.         {
  18.                 return 0;
  19.         }
  20.         */
  21.         goto create_child;
  22. }
复制代码
使用valgrind得出的部分报告内容如下:
  1. valgrind --leak-check=full --log-file=icqz_valgrind --show-reachable=yes
  2. ==14391== LEAK SUMMARY:
  3. ==14391==    definitely lost: 0 bytes in 0 blocks
  4. ==14391==    indirectly lost: 0 bytes in 0 blocks
  5. ==14391==      possibly lost: 139,648 bytes in 3 blocks
  6. ==14391==    still reachable: 10,895,338 bytes in 31,293 blocks
  7. ==14391==         suppressed: 0 bytes in 0 blocks
  8. ==14391==
  9. ==14391== For counts of detected and suppressed errors, rerun with: -v
  10. ==14391== Use --track-origins=yes to see where uninitialised values come from
  11. ==14391== ERROR SUMMARY: 1750 errors from 256 contexts (suppressed: 4 from 4)
  12. ==16751==
  13. ==16751== HEAP SUMMARY:
  14. ==16751==     in use at exit: 0 bytes in 0 blocks
  15. ==16751==   total heap usage: 10 allocs, 10 frees, 2,584 bytes allocated
  16. ==16751==
  17. ==16751== All heap blocks were freed -- no leaks are possible
  18. ==16751==
  19. ==16751== For counts of detected and suppressed errors, rerun with: -v
  20. ==16751== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)
复制代码
分4个进程,每个进程发送10000笔交易, 程序处理后,使用top监控,发现内存少了90M,不知道少在哪里了。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
发表于 2013-12-01 11:13 |显示全部楼层
--track-origins=yes

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19CU十二周年纪念徽章
日期:2013-10-24 15:41:34
发表于 2013-12-02 13:15 来自手机 |显示全部楼层
本帖最后由 shencz2000 于 2013-12-02 14:45 编辑

能不能这样计算,每笔交易丢掉了22.5k?另外,我看到一本经典教材上的一个创建动态链表的小程序,就缺少一条内存释放语句。

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2013-12-02 13:52 |显示全部楼层
进程都退出了,还与什么泄露呢?{:3_189:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP