- 締切済み
メモリリーク
Windowsのサービスからプロセス起動をし、プロセスから_beginthreadでスレッドを作成し(マルチスレッド)、スレッドの中で30秒ごとにSNMPリクエストするようなプログラムを作成しましたが、不定期にメモリ使用量が増えています。 ソースコードをチェックしましたが、クローズ漏れはありません。 情報が少ないですが原因が分かる方がいれば、教えてください。 開発環境はWindows2000,VC6.0です。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- muyoshid
- ベストアンサー率72% (230/318)
回答No.2
こんにちわ。 再現性があるのであれば、怪しい箇所をコメントアウト して、再確認すればソースコードを追うよりも 早く分かると思いますょ。 _beginthread から返されたハンドルは CloseHandle していますよね?
- taknt
- ベストアンサー率19% (1556/7783)
回答No.1
メモリリークとは、確保した領域を解放せず 終了してしまった場合に発生するものです。 どのように変数や配列また、クリエイトしているものがあるのかわかりませんが、そういったものをちゃんと解放しているのか確認する必要があります。
質問者
お礼
ありがとうございました。 解放漏れのチェックはツールを使用し、ソースコードを複数人でチェックしているため、可能性は低そうです。 もう少し調べてみます。
お礼
怪しいところをコメントアウトして調査してみます。 _beginthreadから返されたハンドルをCloseHandleはしていません。 _beginthread時はCloseHandleはしてはいけないはずですが。(_endthreadの中でCloseHandleが呼ばれるから)