問題タブ [reference-counting]
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.
python - オブジェクトサイクル(参照カウント)の検出を支援するためにcpythonは何をしますか?
私がcpythonについて読んだことから、相互に指しているオブジェクトを検出/解放するための参照カウント+何か余分なものがあるようです(間違っている場合は訂正してください)。誰かが何か特別なことを説明できますか?また、これはサイクルリークがないことを保証しますか?そうでない場合は、参照カウントに追加してリークしないようにすることが証明されているアルゴリズムの研究はありますか?これは、非参照カウントトレースgcを頻繁に実行しているだけでしょうか?
*外部関数インターフェイスを使用したモジュールのバグと問題の割引
delphi - Delphiオブジェクトで_AddRefと_Releaseが呼び出されないのはなぜですか?
私は本当に混乱しています。
1が表示されるはずですが、0が表示されます。実行する割り当ての数に関係なく、値は変更されません。なぜだめですか?
python - Python 参照カウントと ctypes
ハロー、
Pythonの参照カウントを理解するのに苦労しています。私がやりたいことは、ctypes モジュールを使用して c++ から python にタプルを返すことです。
C++:
パイソン:
obj の ref カウントがよくわからなかったので、試しsys.getrefcount()
てみたところ3
. そうあるべきだと思います2
(getrefcount
関数は1つの参照自体を作成します)。
Py_DECREF()
オブジェクトが削除されるため、C ++で戻る前に作成できなくなりました。Pythonで参照カウントを減らすことはできますか?
編集 キャスト関数が呼び出されると、ref カウントはどうなりますか? 以下のドキュメントからはよくわかりません。http://docs.python.org/library/ctypes.html#ctypes.cast
ctypes.cast(obj, type) この関数は、C のキャスト演算子に似ています。obj と同じメモリ ブロックを指す type の新しいインスタンスを返します。type はポインター型でなければならず、obj はポインターとして解釈できるオブジェクトでなければなりません。
iphone - ObjectiveC[オブジェクトリリース]
他の人のコードを見ていますが、オブジェクトVIDEOをリリースしているように見えますが、引き続き使用しています。
オブジェクト指向プログラミング言語についての私の理解から、リリースされたら、メモリから割り当てを解除する必要があります...
参照がどのようにあるかわかりません...しかし、それが問題ない理由だと思います。奇妙なことのように思えます(まだ終わっていないときにリリースしてください。たとえば、自動リリースを使用してみませんか)。
c++ - c++でenable_shared_from_thisを使用する場合、既存のshared_ptrをチェックしますか?
生のポインターであるポインターで shared_from_this() を呼び出そうとしたときにスローされた bad_weak_ptr エラーをキャッチする以外に、オブジェクトが参照カウントされているかどうかをテストする方法はありますか?
生ポインタと共有ポインタを扱う関数がありますが、間違ったものを使用したときにエラーが明らかであることを確認したいですか? もちろん、エラーをキャッチすることもできますが、この特定のケースをテストする簡単な方法があるかどうか疑問に思いましたか?
qt - Qt アトミック操作の実装
Qtの参照カウントがどこでどのように実装されているかを見つけようとしています。QBasicAtomicInt および QAtomicInt は、効率的な参照カウント API を提供する ref() および deref() 関数を使用します。これらの関数は値をアトミックにインクリメントおよびデクリメントしますが、これらの関数はライブラリのどこに実装されていますか? Qtがアトミック参照カウントをどのように実装しているかを理解しようとしています。ありがとうございました。
algorithm - サイクルを収集する参照カウントの最も単純な拡張は何ですか?
参照カウントだけではサイクルは収集されませんが、サイクルを収集できる追加の手法もあります。そのような最も簡単なテクニックは何ですか?
拡張参照カウントの複雑さとトレース GC を比較したいと思います。
objective-c - Objective-Cでの参照カウントの警告?
私は長い間、自分自身をガベージ コレクションの俗物だと考えてきました。秘密裏に C++ を愛しているにもかかわらず、選択肢が与えられたときにガベージ コレクションを使用せずに言語を積極的に使用する開発者を冷笑していることに気づきました。
そしてObjective-Cに出会いました。わお!その参照カウントのシステムは見事にシンプルに見えます – 私はエレガントとさえ言えます. OSX 向けに開発する場合、開発者にはおしゃれな GC を使用するオプションが与えられます。iOS 向けに開発する場合、開発者は参照カウントに行き詰まります。
私の質問は:
iOS に移植される可能性のある OSX アプリケーションを開発している場合、Objective-C の参照カウント システムは、アプリケーションの最初のバージョンで無視することを保証するのに十分な (開発およびバグ修正に関して) 時間がかかりますか?
悪魔のように複雑な循環データ構造を構築するほど賢くないと仮定して、参照カウント*に頼ると、どのような問題に遭遇する可能性がありますか? のような機能を使えばautorelease
、すべてがとても簡単に思えますが、もしこれが本当なら、Apple がガベージ コレクタの作成に労力を費やさなかったことを私は知っています。何に気をつければいいですか?
retain
* s とsをいじっていても、ガベージ コレクターを使用できることは承知してrelease
います (それらは無視されます)。ただし、GC 以外のアプリケーションがRAIIretain
を使用することが多いことを考えると、世代別 GC がandへの呼び出しを「置き換える」場合、それがどのように機能するかわかりませんrelease
。リソースのリリースが遅れる可能性はありませんか?
reference-counting - RefCounted!(T)を使用してDで参照カウントオブジェクトを作成する
std.typecons.RefCounted!(T)
Dで参照カウントオブジェクトを作成するためにどのように使用しますか?
ソースを見て内部で何が行われるかを理解しようとしましたstd.array.Array
が、ソースを読み取ることはできますが、ビット単位の構造体コピーなどが含まれる場合、「ペイロード」とは何か、またはすべてがどのように機能するかを理解できません。また、内部構造と外部構造でいくつかのものが重複している理由も同様です。
誰かがそれを使用して、たとえば単純なWin32をラップする方法の例またはリンクを提供できHANDLE
ますか?
ありがとう!
c++ - boost :: shared _ ?? 非ポインタリソースの場合
基本的に、ポインタ/アドレスセマンティクスとすぐに同等ではない特定のリソース(整数インデックスなど)を参照カウントする必要があります。基本的に、リソースを回して、カウントがゼロに達したときに特定のカスタム関数を呼び出す必要があります。また、リソースへの読み取り/書き込みアクセスの方法は、単純なポインターの参照解除操作ではなく、より複雑なものです。boost :: shared_ptrがここでの法案に適合するとは思いませんが、使用する可能性のある他のBoostと同等のクラスが欠落している可能性がありますか?
私がする必要があることの例: