私の考えは、各反復の後に関数で使用しているすべてのポインターを取り除くことです。
私の状況: 何百万回もいくつかの値を計算するループを使用しています。しかし、各反復(i ++)の後、同じ反復を実行しようとしているときに、以前のもので上書きするのではなく、問題を起こさないように解放したいと思います。
数行で使用しているすべてのポインターを解放する方法はありますか?
私の考えは、各反復の後に関数で使用しているすべてのポインターを取り除くことです。
私の状況: 何百万回もいくつかの値を計算するループを使用しています。しかし、各反復(i ++)の後、同じ反復を実行しようとしているときに、以前のもので上書きするのではなく、問題を起こさないように解放したいと思います。
数行で使用しているすべてのポインターを解放する方法はありますか?
スマート ポインターを使用してオブジェクトを割り当てると、自動的に解放されます。
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
、管理するオブジェクトを呼び出します。