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