なんか適当に操作してるとサークルカットが表示されなくなったり、OSがフリーズしたりするようになるみたいなのでAppVerifierにかけてみたらいっぱい出てきた。
まあ、プロトタイピングというか、適当にテスト&つぎはぎしてるのでソースがかなり汚いし、実験的にローカルブロックがあちこちに入ってたりしてるんでかなり漏れがあるはず。気が付いた時に直してはいるんだけども。
・ページ送り用の左右矢印ビットマップをLoadBitmapしてDeleteObjectしてなかった
→そもそもWM_PAINTで毎回LoadBitmapしてるってありえない。
・サークル詳細画面でCreateFontIndirectしてDeleteObjectしてなかった
→DeleteObjectする仕組みはあったが、フォントハンドルの変数を間違えてた。
GWESのリソースをかなりリークさせてたみたいなのでこの辺りが原因ぽい。
…と思ったが、OSフリーズのような深刻な問題は出なくなったっぽいが、詳細画面が出なくなることがあったりと言った症状が残っている。
メモリリークはほぼ根絶している(はず)なのだが、他の問題なのか。
Data Abort(メモリアクセス例外)が頻発してるが場所が特定できてない。
デバッグ文増やして何とか絞り込んでいくしかなさそう。
ちなみにAppVerifierひとくちメモ。
デバッグ情報ファイル(*.mapファイルと*pdbファイル)をデバイスのWindowsフォルダに入れておくと、出力されるログでシンボル解決してくれるよ。(参考:Testing an Application with the Application Verifier Tool)