C++とマルチスレッドとメモリリーク

関数のエピローグでデストラクトしてくれるからこれでいいやと自動変数としてクラスを作っておいたら、スレッドが終了するときにデストラクタが呼ばれてないなぁと、よく考えたら_endthreadex()のところで終了するからエピローグが呼ばれないってことか…。
で、エピローグが呼ばれるようにラッパー関数を用意して、この関数単体ではメモリリークしていないことを確認したのだけど、どう呼ぶかでなんかちょびっとリークしますな…。

void no_memoryleak()があって、メインから呼ぶだけだとメモリリークは報告されない。
スレッドAを作ってAから呼んでもメモリリークは報告されない。
スレッドAから、さらにスレッドBを作って、Bから呼ぶとメモリリークが報告される、不思議!。調べてみよう…。

ただ単にxmlCleanupParser()の呼ぶタイミングの問題だった。

コメントをどうぞ