利用可能な C スマート ポインター実装とその比較
C 03
-
std::auto_ptr: 将来の C 標準では非推奨になります。ガベージ コレクションの制限、所有権の複雑さ、STL コンテナーでの使用不可。
-
std::auto_ptr_ref: 真のスマート ポインターではありません。 std::auto_ptr と組み合わせて使用すると、コピーと割り当てが可能になります。
C 11
-
std::unique_ptr: std::auto_ptr を置き換えます。 std::auto_ptr の弱点を修正し、配列の操作、左辺値保護、STL コンテナーでの使用を可能にします。
-
std::shared_ptr: 参照カウント スマート ポインター。エイリアスとポインタの算術演算をサポートします。
-
std::weak_ptr: std::shared_ptr によって所有されるオブジェクトへの非所有参照。無限の循環参照カウントを防止します。
Boost
-
boost::shared_ptr: 一般的な共有参照カウント スマート ポインター。高いパフォーマンスと多用途性。
-
boost::weak_ptr: boost::shared_ptr への非所有参照。
-
boost::scoped_ptr:少ない機能で boost::shared_ptr に代わるシンプルなスマート ポインターoverhead.
-
boost::intrusive_ptr: 独自のスマート ポインター互換クラスを作成するためのカスタム スマート ポインター。
-
boost::shared_array: 共有スマートポインターarrays.
-
boost::scoped_array: 配列のコピー不可能なスマート ポインター。
Qt
-
QPointer: 賢さが弱いQObject および派生クラスのポインター。非推奨。
-
QSharedDataPointer: スレッド セーフを備えた boost::intrusive_ptr に匹敵する強力なスマート ポインター。
-
QExplicitlySharedDataPointer: 強化された QSharedDataPointer のバージョン 2.0制御するdetachment.
-
QSharedPointer: アトミックな参照カウント、スレッドセーフ、共有可能なスマート ポインター。
-
QWeakPointer: への非所有参照QSharedPointer.
-
QScopedPointer: boost::scoped_ptr に基づく単一所有者のスマート ポインター。例外安全なコードと互換性に適しています。
以上がどの C スマート ポインターを選択すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。