>>544
プログラムが終了した時にデストラクタが呼ばれるけど、その時には標準出力が閉じてるから。
内部のオブジェクトがすぐに解放されないのは、その時点で本当に使われてないのか判断できないから。

あと、適当にリファクタリングしてみたw
重複コードがどうにかならないか検討中・・・
http://codepad.org/QXAeG2aJ