新しい実装が形になってきた

再生コア部分のデバックも終わり、メモリリークもなくなりました。
動画ファイルのプレイリスト的な再生エンジンはできましたので、UIにとりかかります。この調子で、プレイリストの登録や編成までを5月いっぱいで終わらせられるといいのですが…。

メモリリークの検出などはJavaに比べるとVisualStudioというか、C++の方が進んでるのかもしれませんよね。皆さんのサイトやブログを参考に「_CrtSetDbgFlag()」を仕込んでみました。そうするとプロセス終了時にリークしたメモリがダンプされるようになります。ダンプには生成した準に番号がふられアドレスも記載されるので、それらをブレイクポイントに設定して生成されたポイントを見つけるんですね。ほとんどはこれでつぶせたのですが、最後に1個だけわからないのが。動画が終わって再生されると56byteのメモリが生成される、これが生成番号もアドレスもその時々で変わってしまうので、絞れずにいました。動画の再生のタイミングと絡んでいたので相当ffmpegを疑ったのですが^-^; 結局は自分の解放漏れでした。56byteくらいのリークだと大したことないと思うんですが、実はビデオフレームの管理クラスで、先ほどのリークのダンプには載ってこないテクスチャへの参照も持っているのでシステムリソース的には増えてっちゃうんですよね~。これを見つけるのに、ダミーでリークを作ったりして強制的にダンプに出力し、どのへんのタイミングで生成されるのか探る、という技を会得し、無事解決しました^-^
とりあえずダンプは出なくなったので、ランニングしてみていますが、以前は5時間くらいで落ちてしまっていたので、朝まで走らせておこうかな♪

メモリ リークの検出と特定
http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/MemLeaks/

メモリリークの検出方法
http://marupeke296.com/TIPS_No7_SearchMemoryLeak.html

コメント

タイトルとURLをコピーしました