次の方法で共有


WinSNMP 記述子の解放

WinSNMP プログラミング環境では、記述子のメモリを割り当てるコンポーネントに応じて、WinSNMP 実装または WinSNMP アプリケーションに記述子リソースの割り当て解除が割り当てられます。

smiOID または smiOCTETS 記述子のリソースを解放するには、次の規則が適用されます。

  • 入力パラメーターの場合

    WinSNMP アプリケーションは可変長の入力オブジェクトにメモリを割り当てるので、アプリケーションは適切な関数を使用してそのメモリを解放する必要があります。 たとえば、アプリケーションが GlobalAlloc 関数の呼び出しでリソースを割り当てた場合、GlobalFree 関数を使用してリソースの割り当てを解除する必要があります。 アプリケーションが、HeapAlloc 関数を呼び出してリソースを割り当てた場合は、HeapFree 関数を呼び出す必要があります。

  • 出力パラメーターの場合

    次のいずれかの関数を呼び出すと、smiOID または smiOCTETS 記述子にメモリを割り当てる実装が発生します。snmpGetVbSnmpEncodeMsgSnmpOidCopySnmpContextToStr、および SnmpStrToOid

    実装はこれらの出力オブジェクトにメモリを割り当てるので、アプリケーションはリソースの割り当てを解除するために、SnmpFreeDescriptor 関数を呼び出す必要があります。 この関数を使用すると、これらの構造体の ptr メンバーに割り当てられたメモリを解放できます。

smiVALUE 構造体のリソースを解放するには、WinSNMP アプリケーションは smiVALUE 構造体の 構文メンバーを確認し、構造体の メンバーを正しく評価する必要があります。 構文 メンバーが メンバーが smiOCTETS または smiOID 記述子であることを示し、その記述子に対して実装がリソースを割り当てた場合、アプリケーションは SnmpFreeDescriptorを呼び出す必要があります。 これにより、実装でメモリを解放できます。 アプリケーションがリソースを割り当てた場合は、前述のように、適切な関数を使用してメモリを解放する必要があります。

詳細については、「WinSNMP メモリ オブジェクトの割り当てを参照してください。