SNMPマネージャAPIでメモリリークしてしまう
初めて投稿します。
ネットワークに接続したプリンタ4台を、SNMPを使って状態監視するソフトを作成しています。以下のソース(文字数制限のため、大半をコメントで記述しています)を実行すると、SnmpMgrRequest()関数内でメモリリークを起こします。
この関数の戻り値はエラーではありません。しかもプリンタ1台のみを監視するとメモリリークしません。この関数をコメント化しても起きません。
SNMPは始めてなので何が悪いのかよくわかりません。
どなたか何かご存知であればご教示お願いします。
開発環境はWindowsXP(SP1) VC++6 SP5を使用しています。
(ソースの拡張子は.cです。)
void main(){
while(1){
for (i = 0 ; i < 4 ; i++) {
mib=StsGet([プリンタのIPアドレス]);
}
Sleep(600);
}
}
int StsGet(LPSTR adr) {
//SnmpUtilMemAlloc ()でSNMPエージェントのアドレス取得
//SnmpUtilMemAlloc()でコミュニティ取得
//変数バインディングの初期化
//SnmpMgrStrToOid()でOIDを文字列から値に変換
//SnmpUtilMemReAlloc ()で変数バインディングにメモリを割当て
//変数バインディングにOIDを追加
//SnmpMgrOpen ()でSNMPマネージャAPIのオープン(タイムアウト:100ms、リトライ:1回)
// SnmpMgrRequest()でSNMPマネージャAPIに指定操作(Get)を要求
//SnmpUtilVarBindListFree(),SnmpUtilMemFree()で各変数を解放
//SnmpMgrClose()でSNMPマネージャAPIとの接続を終了
return [プリンタ状態;]
}
お礼
有難うございます。 だいぶ整理できました。有難うございます。 「1, 送受信で発生したフレーム数が累積されるカウンタがあったとき、そのカウンタを一定間隔で取得する」 当方の環境では、これしか方法は無いように思います。 ただこの「カウンタ」というのがどうもピンときません・・。 「受信した総バイト数」と説明がありますが、 「上限(4294967925)を超えると、0に戻る。」ともあり、 一旦クローズさせて頂き、また新規にご質問させてください。 よろしくお願いします。