問題タブ [weak-ptr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - weak_pointer.lock() は、weak_ptr の作成に使用された元の shared_ptr の参照カウントをインクリメントします
私の理解によると、すべての shared_ptr オブジェクトを使用し、循環依存関係がある場合、循環依存問題に弱いポインターが使用されます。ウィーク ポインターは、サイクルを中断するために使用されます。弱いポインターは、共有ポインターを作成する lock() を使用してこれを実現します。
しかし、x->b->a.lock() を呼び出してロックを作成したと仮定すると、x の参照カウントは 2 になり、x がスコープを離れてもメモリ リークが発生しますよね? lock() を使って共有ポインタを作成したところ、ref カウントが 2 になりました。私の理解が正しいかどうか教えてください。
c++ - 元のポインタを削除した後のweak_ptrへのアクセス
以下のコードを実行すると、ランタイム エラーが発生します。
元の共有ポインターを削除した後、ポインターがまだアクセス可能であるかどうか (そうであってはならない) を見つけようとしていました。
c++ - 空のweak_ptrを引数としてmap::countを呼び出すのは安全ですか?
初期化されていない空の金庫を呼び出しmap::count
ても安全ですか?weak_ptr
私はまだ C++ の経験が浅く、これを判断するスキルがありません。
私のアプリケーションでは、 aweak_ptr
は a のキーとして保持されてmap
おり、値によって最初に見つける必要があります。見つからない場合は、初期化されていないweak_ptr
ものがreturn
編集され、 で使用されmap::count
ます。
コード
設定
データで探す
発見
c++ - std::set または std::map のキーで weak_ptr を使用しても安全ですか
今日、連想コンテナおよびでのstd::weak_ptr
およびそれらの使用に関して、多くの質問がありました。ウィーク ポインターが期限切れになると未定義の動作になるため、 aで aを使用することは正しくないと述べている投稿が多数あります。これは正しいです?std::owner_less
std::set
std::map
weak_ptr
std::set
c++ - スマートポインタ + サイクル + "->"
時々、ポインターの循環依存が必要であり、循環上のすべてのオブジェクトがそのポインターを使用できる必要があると確信している場合があります (したがって、weak_ptr にすることはできません)。
私の質問は、これは私の設計が悪いということですか?
グラフを実装したい場合はどうすればよいですか? スマート ポインターを使用できますか? グラフには循環がありますが、weak_ptr では "->" を使用できません。私に何ができる?
StackOverflow に関するいくつかの記事、リファレンス、およびトピックを読みましたが、まだスマート ポインターを取得していないようです。本当に、「->」を使用したweak_ptrのバリアントが存在しないのはなぜですか?