原因不明のメモリリーク。

ここ2週間くらい原因不明のメモリリークに悩んでいました(汗)
数時間動作するとメモリを使い切ってしまって落ちてしまうかフリーズしてしまう、というもの。subversionで更新したコードをさかのぼっていくと、キャッシュされたテクスチャを呼び出すメソッドをconstメソッドからconst無しに変えたタイミングがあり、そのタイミングから発生した模様。

キャッシュは、Poco::HashMapを使ってるんですが、よくよく調べていくとHashMapのエントリに対して[]でアクセスするとリークするみたい。
(当たり前のことかもしれませんが)constとconst無しで実装が変えてあり、const無しで[]アクセスすると確かに増える。
実装を見るとHashTableの方はそれっぽい実装だと思うんだけど、HashMapの operator[] はメンバーのHashTableにinsertしちゃってるんだけど、そこかなぁ。

ということで、ライブラリに手をいれるのもやだし、読み出し系メソッドだからconst指定には戻したんですけど、また何かの拍子で戻してはまるとイヤなので^-^;
気になるところは map.find(name)->second に変えました、とさ。

コメント

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