net-snmp 出现内存泄露问题,请指教!

jiangluyz 2012-01-30 09:55:23

int SnmpSetString(const char *sIPaddress,const char *sOidTmp,char types,char *values)
{
netsnmp_session session, *ss;
netsnmp_pdu *pdu;
netsnmp_pdu *response;

oid anOID[MAX_OID_LEN];
size_t anOID_len=MAX_OID_LEN;
int status;
int iReturnValue=0;
Initsnmp(&session,(char*)sIPaddress,"snmpset"); //初始化session
ss = snmp_open(&session);
if (ss == NULL)
{
snmp_sess_perror("snmpset", &session);
SOCK_CLEANUP;
return iReturnValue;
}


pdu = snmp_pdu_create(SNMP_MSG_SET);
if(NULL==pdu)
{
//snmp_perror(sOidTmp);
SOCK_CLEANUP;
return iReturnValue;
}

if (!snmp_parse_oid(sOidTmp, anOID, &anOID_len))
{
//snmp_perror(sOidTmp);
snmp_close(ss);
SOCK_CLEANUP;
return iReturnValue;
}

if(snmp_add_var(pdu, anOID, anOID_len,types, values))
{
//snmp_perror(sOidTmp);
snmp_close(ss);
SOCK_CLEANUP;
return iReturnValue;
}


/*
* Send the Request out.
*/
status = snmp_synch_response(ss, pdu, &response);
if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR)
{
iReturnValue=2;
}
else
{
iReturnValue=1;
}
if (response)
{
snmp_free_pdu(response);
}
snmp_close(ss);
SOCK_CLEANUP;
return iReturnValue;
}





...全文
328 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangluyz 2012-01-30
  • 打赏
  • 举报
回复
而且snmp_open返回的指针应该不是new/或者malloc出来的,所以也不会有内存泄露啊,请大牛解释
jiangluyz 2012-01-30
  • 打赏
  • 举报
回复
snmpset的次数比较多,所以这样还是会造成很大的内存泄露
jiangluyz 2012-01-30
  • 打赏
  • 举报
回复
恩。谢谢你的指导,但程序还是会内存泄露
RLib 2012-01-30
  • 打赏
  • 举报
回复
if(NULL==pdu)
{
//snmp_perror(sOidTmp);
SOCK_CLEANUP;
return iReturnValue;
}

这段代码你就漏了ss
RLib 2012-01-30
  • 打赏
  • 举报
回复
很好.

64,433

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧