CoInitializeとCoUninitialize
CoInitializeとCoUninitializeの呼び出しについてのメモ。
仕事でCOMに泣かされたので^^;
ペアで呼び出す
CoInitializeとCoUninitializeはペアで呼び出す必要がある。
基本的にスレッドの開始でCoInitialize、スレッドの終了でCoUninitializeを呼び出せば問題ない
同じ回数だけ呼び出す
なぜ、ペアで呼び出す必要があるのか、それはどうやら内部的にカウンタを持っているようで、
CoInitializeを呼び出した回数文だけ、CoUninitializeを呼び出す必要がある。
その為、必ずペアで呼び出さないといけない。
最後のCoUninitializeでメモリが解放される
例えば、MSXMLを利用し、XMLを読み込んだとする。
IXMLDOMxxxには解放関数Releaseがありますが、Release関数を呼び出しただけではメモリは解放されない模様。
最後のCoUninitializeを呼び出すことで初めてメモリの解放が行なわれる。
その為、一度に多くのXMLを扱うようなプログラムの場合は、スレッドの開始と終了よりも、XMLの処理の開始と終了に
CoInitializeとCoUninitializeを呼び出すようにするのが望ましい。