アプリケーションで次の擬似コードのようなことをする必要があるかもしれないと思います:
boost::shared_ptr<T> p;
...
...
p = boost::shared_ptr<T>(new T);
boost::shared_ptr
代入演算子を使用するための他のオプションがあることは認識していますが、ドキュメンテーション/例で、デフォルトのコンストラクターを含むこのようなケースについては決して議論されていないことに気付きました。
私の質問は、次のとおりです。これは有効な使用ですか?言い換えれば、それは合法であり、潜在的なメモリリークにつながる可能性がありますか? アイデア/修正を感謝します。どうもありがとう!
注: 以下のいくつかのコメントも示唆しているようにshared_ptr
、コンストラクターを で呼び出すときは常に名前付きを使用することをお勧めしnew
ます。それでも、これが害を及ぼす可能性があるとは想像しがたいです。反例がある場合は、親切に投稿してください。ありがとう!