もとが Hoge *p = new Hoge(new Fuga); なんだから、
Hogeの引数はauto_ptrじゃなくてFuga*型だし、
Hogeがメモリ解放する設計になってるんでは?