スマートポインタを使わなくてもどこかのクラスに生成を任せて解放をプログラムの最後に実行するようにすればいいと思うんですが
どうでしょうか