> そもそも、きっとTHogeのFreeは存在しなくて、TObject.Freeが呼ばれている事も。

いやだから、仮想メソッドじゃないんだから Free は TObject.Free しかないでしょ。