私が理解しているように、割り当て解除された可能性のあるstd::shared_ptr
によって参照されるメモリを参照する安全な方法として、std::weak_ptr
が使用されています。 std::unique_ptr
と一緒に使うことはできますか?weak_ptrはunique_ptrと一緒に機能しますか?
答えて
私はそれははstd ::解放された可能性がありshared_ptrsによって参照されるメモリを参照する安全な方法として使用されてweak_ptrを理解しています。
あなたは間違っています。 std::weak_ptr
はオブジェクトにアクセスすることを許可しますが、所有権は共有されずにstd::shared_ptr
によって維持されます。今あなたが実際にstd::weak_ptr
を理解するとき、あなたの質問がstd::unique_ptr
について理解できないことを理解する必要があります。
いいえ。
残念ながら、std::shared_ptr
を使用し、std::weak_ptr
を一時的にロックする必要があることを文書化する必要があります。
残念ながら、幸いにも? 'single_ptr'の特権ではありません:: – curiousguy
@curiousguy"残念ながら "長期の単一所有権の意味を保持するために、ロックされた' std :: weak_ptr'を決して保持しないために外側のコードに依存しなければならないからです。 – Quentin
ユニーク所有スマートptrの共有所有スマートptrの明確な構文と意味的優位性は、 'release'メソッド(例外ではなく、保証された動作)です。 unique_ptr_except_locked_weak_ptrを持つことができ、ロックが "短く"なることを期待することができますが、ロック(弱い参照)のロックは何かを残して最後の所有者になり、 'release()'は保証されません。 – curiousguy
号
weak_ptr
に利用可能な唯一のコンストラクタはshared_ptr
または別のweak_ptr
のいずれかを取る一つです。
std::unique_ptr
にオブザーバとして機能する同等のポインタがありますが、std::weak_ptr
と同じように安全性は提供されません。
そのポインタは生ポインタです。ユニークな所有者より長生きしていない場合は、安全に使用できます。
生ポインタの所有者の有効期間が終了したかどうかを知る必要がある場合は、いいえ、方法はありません。目標はstd::unique_ptr
ではありません。
- 1. マイFFT2機能は、私と一緒に
- 2. Includeとfieldsのフィルターが一緒に機能しませんか?
- 3. jPlayerとSummernoteうまく機能して一緒に
- 4. pthreadsと一緒に/からWin32 API機能を使用する
- 5. cssアニメーションrotateとtranslateが一緒に機能しない
- 6. オンフリンジとオンタッチが一緒に機能しない
- 7. JQuery調光器とスクロールが一緒に機能しない
- 8. 同じメソッドのアラートとセグが一緒に機能しない
- 9. overflow-y autoと矢印が一緒に機能しない
- 10. ng-repeatとng-scrollbarが一緒に機能しない
- 11. Onsen UI 2.0スプリッタとプッシュページが一緒に機能しない
- 12. 選択 - 作成とオプションが一緒に機能しない
- 13. Pythonマルチプロセッシング。ダミーと深いディシジョンが一緒に機能しない
- 14. Angularjと通常のJavascript関数が一緒に機能しませんか?
- 15. なぜjqueryのisVisibleはスクロール機能と一緒に動作しません
- 16. 可変配列+正規表現は一緒に機能しませんか?
- 17. Chromeのオプションと機能を一緒に追加できますか?
- 18. jQuery編集可能なプラグインとjqueryデータテーブルが一緒に機能しない
- 19. --autostashオプションが機能しないのはなぜですか? (git pull --rebaseと一緒に使用します)
- 20. cookie-configと一緒に使用するとセッションタイムアウトが機能しない
- 21. JS | OnclickでOnloadは一緒に機能しません - 迅速なソリューション?
- 22. PHP:json_decodeが一緒に機能していないfile_get_contents
- 23. 2つのコードを一緒にして機能させる
- 24. Materialize Navbarドロップダウン/サイドバーのドロップダウンが一緒に機能しない
- 25. dgrid ColumnHider、CompundColumns、およびColumnReorderが一緒に機能しない
- 26. 実行可能なjarと一緒にJREをバンドルします
- 27. 変数と一緒に使用するとbashブレース機能が失敗しますか?
- 28. forEachの機能は、私は、このマニュアルと一緒に、次の午前のドキュメント
- 29. jQuery UIは、クリックフェードとホバーフェードが一緒に機能しないようにします。
- 30. Keras - 機能的APIモデルを一緒に接続する
["なぜweak_ptrをunique_ptrから構築できないのですか?"](http://stackoverflow.com/questions/29059343/why-cant-a-weak-ptr-be -p-a-unique-ptr) – WhozCraig
いいえ、意味がありません。 'std :: weak_ptr'は' std :: unique_ptr'が持っていない* shared ownership *を必要とします。 – Galik
unique_ptrは* unique *です。それは人生の目的です。 –