释放 WinSNMP 描述符

WinSNMP 编程环境将描述符资源的解除分配分配给 WinSNMP 实现或 WinSNMP 应用程序,具体取决于为描述符分配内存的组件。

若要释放 smiOIDsmiOCTETS 描述符的资源,以下规则适用:

  • 对于输入参数

    由于 WinSNMP 应用程序为具有可变长度的输入对象分配内存,因此应用程序必须使用适当的函数释放该内存。 例如,如果应用程序使用对 GlobalAlloc 函数的调用分配了资源,则应使用 GlobalFree 函数解除分配资源。 如果应用程序使用对 HeapAlloc 函数的调用分配了资源,则应调用 HeapFree 函数。

  • 对于输出参数

    对以下任一函数的调用会导致实现分配 smiOID 或smiOCTETS 描述符的内存: SnmpGetVbSnmpEncodeMsgSnmpOidCopySnmpContextToStrSnmpStrToOid

    由于实现为这些输出对象分配内存,因此应用程序必须调用 SnmpFreeDescriptor 函数来解除分配资源。 此函数使实现能够释放为这些结构的 ptr 成员分配的内存。

若要释放 smiVALUE 结构的资源,WinSNMP 应用程序必须检查 smiVALUE 结构的语法成员才能正确评估结构的值成员。 如果 语法 成员指示 成员是 smiOCTETSsmiOID 描述符,并且实现为描述符分配了资源,则应用程序必须调用 SnmpFreeDescriptor。 这使实现能够释放内存。 如果应用程序分配了资源,则必须使用适当的函数释放内存,如前所述。

有关详细信息,请参阅 分配 WinSNMP 内存对象