• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

数据结构与算法:内存泄漏检查[2]

发布: 2008-4-21 18:33 | 作者: 网络转载 | 来源: 中程在线 | 查看: 34次 | 进入软件测试论坛讨论

领测软件测试网 voidGC_CheckMemoryLeak()
    {
           void*p;
           HashTable_EnumBegin(g_pTable);
           while((p=HashTable_EnumNext(g_pTable))!=NULL)
           {
                  INT*pRef;
                  INT*pSize;
                  INT*pLine;
                  char*pszFile;
                  pRef=(INT*)p;
                  pSize=pRef+1;
                  if(*pRef !=0) /*判断引用计数是否为0*/
                  {
                          pLine=(INT*)((char*)p+*pSize+DOUBLE_INT_LEN);
                          pszFile=(char*)pLine+INT_LEN;
                          printf("File:%s,Line:%dhavememoryleak.\n",pszFile,*pLine);
                  }
           }
    }

    注意:程序中使用了printf()函数将文件名和行号打印出来,这里使用printf()函数只是做一个示意,实际应用中可能需要改成其他类型的信息输出函数。

    可以使用函数调用来实现在程序退出时自动调用GC_CheckMemory()函数。

    atexit(GC_CheckMemoryLeak);

    这里使用了C标准库的atexit()函数,这个函数是在整个程序退出时调用它的参数指向的函数来执行,但是调用的时间比全局变量的释放要早,所以如果使用了全局变量,全局变量也被当作泄漏报告出来。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 数据结构 算法


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网