读书人

net-snmp 出现内存泄露有关问题

发布时间: 2012-04-07 17:31:50 作者: rapoo

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

C/C++ code
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;}


[解决办法]
很好.
[解决办法]
if(NULL==pdu)
{
//snmp_perror(sOidTmp);
SOCK_CLEANUP;
return iReturnValue;
}

这段代码你就漏了ss

读书人网 >C++

热点推荐