http://d.hatena.ne.jp/ajiyoshi/20080925/p1
このサイトに説明されている

BadBase* base = new BadSub(); //"リソース確保しますた"
delete base; //"リソースが開放されない!"

の部分で基底クラスに virtual をつけないといけないと説明があるけど
BadBase* base = new BadSub();
を使わないで
BadSub* sub = new BadSub();
で生成するようにすれば良いんじゃないの?
わざわざなんで virtual 使うの?