C ++スマートポインタを導入_サプリメント

私が間違って何をしたか理解していない、これらの日は、私の妻は再び私に冷戦を与え、またビデオは私が赤ちゃんを見てみましょう私を与えました。ねえ、疲れた心!スマートポインタの右側に補完するためにいくつかの自由時間の今夜を利用して。

 

次の日仕事にする方法を「スマートポインタが導入された」記事を書いた後、突然、私の心に定着疑い、私はいくつかの欠陥や欠落資料に記載されて感じます。

質問:2つのスマートポインタが同じヒープOBJを参照する場合、その範囲のうち、スマートポインタは、どのようにあなたが今1(はuse_count)となり、ヒープがobj参照別のスマートポインタを知っていますか?

           参照カウントが内側部材のVAR「ポインタクラススマート」であるならば、それは右、スマートポインタとして表示されなくなりますか?しかし、別のスマートポインタ参照別ああのみ保存]を知ってはいけません(メンバーVAR)をカウントしています!

 

後のAndroidの下でスマートポインタの実装を検討し、この質問を投げます:

        SP <XYZ> sp_obj =新しいXYZ();参照クラスにアンドリューススマートポインタは、要件を有する:XYZはRefBaseにおける基本クラス参照カウントに実装、RefBaseから継承しなければなりません。

各sp_obj_xクラス参照カウンタとXYZの内部にアクセスして変更することができますので、だから、XYZクラスのオブジェクトは、複数のsp_obj_xを参照されているので、真のXYZクラスオブジェクト(ヒープOBJ)を解放するとき、あなたは簡単に知ることができます。

 

回答紹介:

あなたがお互いか2つのスマートポインタのリリースリソースを知りたい場合は、「互いに通信」できるようにする必要があり、したがって、2つのスマートポインタ間および内の「参照カウント」は、単一のクラスのシェアすることはできません!

どのように情報を共有するために、2つのスタックOBJを作るには?OBJ共通の基準をヒープに加えて(内部ref_cntがある場合、また、Androidのスマートポインタに似て行うことができます)が、唯一の「参照カウント」こと、そしてそれが動的メモリでなければなりません!

すなわち、第一の基準リソース(ヒープobjが)、即ち、第1のshared_ptrが、構築された場合と、ある内部スタック・ポインタ、メモリの必要性新しい作品、参考のためにこのメモリを保持する変数に加えて(1を追加する前にその内部ref_cnt)管理を数えます。

第二は、同じリソース、すなわち、コピー構成によって参照されたとき(shared_ptrの(  shared_ptrのCONST &R&LT  、共通のリソースに加えて、我々はまた、最後の遮断新しいメモリを参照するための基準、及びプラスref_cnt)を1、2となります。

これは、最初のスマートポインタのリリース後に説明することができ、第二のスマートポインタ参照は、によって管理されるリソースの数を知ることができます。

 

他のサプリメント:

SPのgetStrongCountに対応1.use_count()()。

2.weak_ptrロック()は、リソースの所有権を取得し、その後、リソースの可用性を決定するために、)(促進WPに相当します。

3.get()は、リソース管理するアドレスを取得するために使用されています。

◆4。()および= NULL(つまり、演算子は=)参考のためにリリースされたインテリジェンスリソースを指し、必ずしもそうではないが、実際に(また、他のスマートポインタ参照しながら、)リソースを解放します。

リソースへのアクセスの管理のために*>と - 5はオーバーロードされます。

 

ただ、追加するために、後でそれを考える、それを言いたいです。

 

              

おすすめ

転載: www.cnblogs.com/Dreaming-in-Gottingen/p/11427048.html