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