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 メモリ オブジェクトの割り当て」を参照してください