2

この関数はメモリリークを発生させないことが保証されていますか(に追加の割り当てはありませんSomeObject):

void FreeFunction()
{
   static boost::scoped_ptr<SomeObject> MyStaticObject(new SomeObject);
}

静的割り当てとスマートポインタの組み合わせを使用したことはありません。私のコンパイラでは問題なく動作しているようですが、これによって割り当てられたメモリが常にクリーンアップされるかどうかを知りたいです。

4

1 に答える 1

6

はい、メモリリークはありません。here は、変数が最初の呼び出しで初期化され、その後、プログラムの存続期間中ずっと生き続けることを意味します
(他の静的変数と同じように)。 C++ ランタイムは、ある時点で が破棄されるように調整および確認します。staticMyStaticObjectFreeFunction()
MyStaticObject

于 2012-05-24T11:34:42.870 に答える