問題タブ [shared-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++ - shared_ptr から通常の ptr を取得しますか?
shared_ptr<Type> t(makeSomething(), mem_fun(&Type::deleteMe))
へのポインタを必要とするCスタイルの関数を呼び出す必要があるようなものがありますType
。からどうやって入手するのshared_ptr
?
c++ - boost::shared_ptr の NULL ポインタ?
次と同等のものは何ですか:
を扱うときboost::shared_ptr
?以下のコードですか?
注: 私はそのようなオブジェクトの多くを押し戻す可能性があります。nullPtr
どこかでグローバル静的オブジェクトを宣言する必要がありますか? そうすれば、そのうちの 1 つだけを構築する必要があります。
c++ - boost::shared_ptr を意図的に削除するには?
私は多くのboost::shared_ptr<MyClass>
オブジェクトを持っていますが、ある時点で、意図的delete
にそれらのいくつかにメモリを解放したいと考えています。(その時点で、指定されたMyClass
オブジェクトはもう必要ないことがわかっています。) どうすればそれを行うことができますか?
delete()
で取得した生のポインターで呼び出すことはできないと思いますget()
。
get_deleter(shared_ptr<T> const & p)
で関数を見たことがありますがboost::shared_ptr
、使い方がわかりません。また、すぐ横に実験的と書かれています。(私は Boost 1.38 を持っていると思います。)
たぶんboost::shared_ptr
、変数に新しい空を割り当てるだけですか?古い値を破棄して削除する必要があります。
c++ - boost::shared_ptr を使用した static_cast?
static_cast
withに相当するものは何boost::shared_ptr
ですか?
つまり、次のようにどのように書き換える必要がありますか
を使用するshared_ptr
場合
c++ - ブーストされています shared_ptrスレッドセーフ?
について質問がありboost::shared_ptr<T>
ます。
スレッドがたくさんあります。
Q1
Thread_Aが最新であることを気にしない場合nowResource
、コードのこの部分に問題はありますか?
つまり、 Thread_BSetResource()
が完全ではない場合、 Thread_Aは間違ったスマート ポイントを取得しGetResource()
ます。
Q2
スレッドセーフとはどういう意味ですか?
リソースが最新かどうかを気にしないshared_ptr<CResource> nowResource
場合、 がリリースされたときにプログラムがクラッシュするか、それともnowResource
問題によって が破壊されshared_ptr<CResource>
ますか?
shared-ptr - ATL CAutoPtr と STL std::auto_ptr の違いは?
MFC でコードを書いていて、自動ポインターを使用したいと考えています。同じことをしているように見える 2 つの異なるクラスに出くわしました:CAutoPtr
およびstd::auto_ptr
2 つの異なる実装について人々の考えは?
さらに、私はあることを知っていますstd::tr1::shared_ptr
。shared_ptr
ATL/MFC に似たものはありますか?
c++ - 参照カウントスマートポインターの参照カウントはどのように機能しますか?
言い換えれば、実装はどのようにカウントを追跡するのでしょうか?
shared_ptr
キーがポインタのアドレスで、値が参照の数であるすべてのインスタンスからアクセスできる、マップのようなオブジェクトが維持されていますか? を実装する必要がある場合shared_ptr
、これが最初に頭に浮かんだアイデアです。
これらの参照カウント スマート ポインターの場合、メモリ リークの可能性はありますか? もしそうなら、どうすればそれらを避けることができますか?
c++ - shared_ptrを使用するときにサイクルを検出する方法
shared_ptrは、Boostライブラリの参照カウントスマートポインタです。
参照カウントの問題は、サイクルを破棄できないことです。これをC++で解決するにはどうすればよいのでしょうか。
「サイクルを作成しない」、「weak_ptrを使用する」などの提案はしないでください。
編集
サイクルを作成することがわかっている場合は問題がないので、weak_ptrを使用するという提案は好きではありません。また、実行時にshared_ptrsを生成した場合、コンパイル時にサイクルが発生することもわかりません。
だから、私は特にそのような答えを持たないように頼んだので、weak_ptrを使用している答えを自己削除してください...