snmp++ 3.2.23中的內存泄漏

在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
這樣也不會存在這個問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章