0

私の考えは、各反復の後に関数で使用しているすべてのポインターを取り除くことです。

私の状況: 何百万回もいくつかの値を計算するループを使用しています。しかし、各反復(i ++)の後、同じ反復を実行しようとしているときに、以前のもので上書きするのではなく、問題を起こさないように解放したいと思います。

数行で使用しているすべてのポインターを解放する方法はありますか?

4

1 に答える 1

1

スマート ポインターを使用してオブジェクトを割り当てると、自動的に解放されます。

for (int i(0); i < 10000000; ++i)
{
    std::unique_ptr<Foo> pFoo(new Foo());
    std::unique_ptr<Bar> pBar(new Bar(pFoo.get()));

    pBar->DoSomething();
}

ループのスコープを離れると、std::unique_ptrオブジェクトはスタックに割り当てられるため、自動的に破棄されます。それらのデストラクタはdelete、管理するオブジェクトを呼び出します。

于 2013-04-12T09:41:32.857 に答える