王骏的BLOG
编程、网络技术点滴...
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345
公告

留言簿(26)

随笔分类

随笔档案

文章分类

文章档案

相册

WEB开发

相关链接

搜索

最新评论

阅读排行榜

评论排行榜

 
VC知识库BLOG   首页  新随笔  联系  聚合  登录 
  随笔-65 文章-5 评论-252 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 阅读(831) 评论(0)  编辑 收藏
Comments
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]