std::shared_ptr
std::shared_ptr は、次の機能を提供します。動的に割り当てられたオブジェクトを共有所有権で管理する方法。ただし、std::shared_ptr
実際の例
次のコード スニペットを考えてみましょう。
<code class="cpp">#include <memory> #include <vector> class Test { public: Test() { std::cout << "Test created" << std::endl; } ~Test() { std::cout << "Test destroyed" << std::endl; } }; int main() { std::vector<std::shared_ptr<void>> v; { v.push_back(std::shared_ptr<Test>(new Test())); } return 0; }</code>
驚くべきことに、このコードの出力は次のとおりです:
Test created Test destroyed
これは、Test オブジェクトが std::shared_ptr
基礎となるメカニズム
std::shared_ptr は、管理オブジェクトの型を実装から分離する型消去を提供します。内部的には、元のオブジェクトの型に基づいて適切なデストラクターを呼び出すデリーター関数が格納されます。
std::shared_ptr
標準への準拠と信頼性
説明されている動作は現在機能しますが、実装の詳細に依存します。 C 標準では保証されていません。これは 2 つの理由によるものです:
したがって、std::shared_ptr
以上がシャットダウン時の信頼性の高いクリーンアップに std::shared_ptr を使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。