Освобождение дескрипторов 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".