释放 WinSNMP 描述符
WinSNMP 编程环境将描述符资源的解除分配分配给 WinSNMP 实现或 WinSNMP 应用程序,具体取决于为描述符分配内存的组件。
若要释放 smiOID 或 smiOCTETS 描述符的资源,请遵循以下规则:
对于输入参数
由于 WinSNMP 应用程序为具有可变长度的输入对象分配内存,因此应用程序必须使用适当的函数释放该内存。 例如,如果应用程序通过调用 GlobalAlloc 函数分配了资源,则应使用 GlobalFree 函数解除分配资源。 如果应用程序通过调用 HeapAlloc 函数分配了资源,则应调用 HeapFree 函数。
对于输出参数
调用以下任何函数都会实现为 smiOID 或smiOCTETS 描述符分配内存: SnmpGetVb、 SnmpEncodeMsg、 SnmpOidCopy、 SnmpContextToStr 和 SnmpStrToOid。
由于实现为这些输出对象分配内存,因此应用程序必须调用 SnmpFreeDescriptor 函数来解除分配资源。 此函数使实现能够释放为这些结构的 ptr 成员分配的内存。
若要释放 smiVALUE 结构的资源,WinSNMP 应用程序必须检查 smiVALUE 结构的语法成员,以便正确评估结构的值成员。 如果 语法 成员指示 值 成员是 smiOCTETS 或 smiOID 描述符,并且实现为描述符分配了资源,则应用程序必须调用 SnmpFreeDescriptor。 这使实现能够释放内存。 如果应用程序分配了资源,则必须使用适当的函数释放内存,如前所述。
有关详细信息,请参阅 分配 WinSNMP 内存对象。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈