释放 WinSNMP 描述符

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

若要释放 smiOIDsmiOCTETS 描述符的资源,请遵循以下规则:

  • 对于输入参数

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

  • 对于输出参数

    调用以下任何函数都会实现为 smiOID 或smiOCTETS 描述符分配内存: SnmpGetVbSnmpEncodeMsgSnmpOidCopySnmpContextToStrSnmpStrToOid

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

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

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