WTLとBoehm GCの組み合わせで……
gc_cleanup を継承したクラスの中で、 ::GetObjectType に失敗する。
デバッグモードだと、CPaintDC::SelectPen の内部で ::GetObjectType を呼び出すからアサーションにひっかかる。
リリースモードでも、明らかに SelectPen に失敗していて色がおかしくなる。
gc の継承に変えると不思議と平気。
あーつまり、デストラクタがオブジェクト固有のCPenを勝手にリリースするからか。そりゃそうか。
(追記)
クラスのメンバとして CPen を持つのをやめて、描画ルーチンを CreatePen と DeleteObject で挟んだら gc_cleanup のデバッグモードでもちゃんと動いた。
修正前のプログラムでも、オブジェクトの数を減らすとアサーションが出るのが遅くなるので、CPen を保存しちゃいかんということですな。
(結論)
GC の効果を検証するためのプログラムを書いたら、思わぬところで CPen の使い方をミスっていたのがまさに GC のおかげで発覚したわけで、つまり GC 万歳ということです。