王骏的BLOG
编程、网络技术点滴...
<2009年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
公告

留言簿(31)

随笔分类

随笔档案

文章分类

文章档案

相册

WEB开发

相关链接

搜索

最新评论

阅读排行榜

评论排行榜

 
VC知识库BLOG   首页  新随笔  联系  聚合  登录 
  随笔-113 文章-5 评论-212 Trackbacks-0

关键词:memory leak,snmp++

log.h 中
static AgentLog* log()
   { if (!instance) init(new AgentLogImpl()); return instance; }
分配的instance没有释放,造成64字节(64 bytes)的内存泄漏。

解决:
log.h 中增加delete_log_instance()函数:

class DLLOPT DefaultLog
{
 ....
 static void delete_log_instance()
 { if (instance) delete instance; instance = 0; }
 ....
};

LOG_END的定义修改如下:
#define LOG_END       \
  *DefaultLog::log() += DefaultLog::log_entry(); \
  DefaultLog::delete_log_entry();   \
  DefaultLog::log()->unlock();   \
  DefaultLog::delete_log_instance();  \
 }       \

如果不使用日志功能,可以在编译snmp++的时候:#define _NO_LOGGING
这样也不会存在这个问题。

posted on 2008-03-23 20:48 王骏的BLOG 阅读(1566) 评论(1)  编辑 收藏
Comments
  • # re: snmp++ 3.2.23中的内存泄漏
    漂在深圳
    Posted @ 2009-05-25 14:31
    楼主强呀!支持一下!
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]