C のスマート ポインターを理解する : いつどの型を使用するか
スマート ポインターは、オブジェクトの所有権とリソースを管理するための最新の C プログラミングにおいて不可欠なツールです一生。 C 11 および Boost ライブラリの出現により、さまざまな種類のスマート ポインターが導入され、さまざまなシナリオでどれを使用するかという問題が生じています。
共有所有権
リソースの共有所有権については、std::shared_ptr および std::weak_ptr が推奨されます。 Shared_ptr では、複数の所有者がリソースを共有できますが、weak_ptr は、リソースの有効期間に影響を与えることなくリソースを観察するための非所有参照を提供します。 Boost は、std::shared_ptr
一意の所有権
std::unique_ptr は一意の所有権のデフォルトの選択であり、Boost のscoped_ptr に比べていくつかの利点があります。 Unique_ptr はカスタム デリーターをサポートしており、移動可能であり、STL コンテナーと互換性があります。 Boost は、C 11 で標準化されたscoped_ptr の配列バージョンとしてscoped_array を提供します。
所有権なし
所有権のない参照には生のポインタまたは参照を使用する必要があります。参照しているオブジェクト/スコープよりも存続するリソースに。生のポインタは null 可能性とリセット可能性を許可しますが、参照は不変性のために優先されます。
Boost スマート ポインタ
Boost は、intrusive_ptr などの追加のスマート ポインタ タイプを提供します。既存のリソースから参照カウント管理を採用します。ただし、これらの型は C 11 では標準化されていません。
非推奨
std::auto_ptr は、強化された機能を提供する unique_ptr を優先して C 11 で非推奨になりました。 .
以上がどの C スマート ポインターを使用すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。