私は現在、C++ の大規模なアプリケーションに Boehm ガベージ コレクターを使用しています。それは機能しますが、GCは私の目的にはやり過ぎのようです(これを依存関係にするのは好きではありません。つま先を踏まないように、すべてのことで継続的に許容範囲を作り、GCについて考える必要があります)。たまたまそれをカバーする包括的なソリューションではなく、自分のニーズにより適したより良いソリューションを見つけたいと考えています。
私の状況では、「収集」したい特定のクラス (およびそのクラスから継承するすべてのもの) が 1 つあります。一般的なガベージ コレクションは必要ありません。この特定のクラスを除くすべての状況で、自分のメモリを簡単に管理できます。
GC を使い始める前は、参照カウントを使用していましたが、参照サイクルと頻繁な更新により、これは理想的なソリューションとは言えませんでした。
このクラスを追跡するためのより良い方法はありますか? ブーストなどの追加のライブラリ依存関係を含まないもの。
編集: オブジェクトの潜在的な寿命について概説するのがおそらく最善です。
関数は私のクラスの新しいインスタンスを作成し、それを使用する場合と使用しない場合があります。とにかく、この新しいインスタンスを呼び出し元に戻り値として渡します。呼び出し元もそれを使用する可能性があり (または使用しない可能性があります)、再びそれをスタックに戻し、最終的にはポインターを忘れ去らせるトップレベルの関数に到達します。
「可能な使用」の一部には、将来どこかで使用するためにポインターを保存する(または保存しない)他の関数にポインターを渡すことが含まれるため、トップレベルのポインターを削除することはできません。
これが、私が解決しようとしている問題をよりよく示していることを願っています。現在、Boehm Garbage Collector で解決していますが、可能であれば、よりシンプルで依存関係のないソリューションが必要です。