厳密に言うとわかりませんが、shared ptr をガベージ コレクションの戦略として扱いたいと思います。
ここで 2 つの質問があります。
- ガベージ コレクションに適した共有 ptr の場合は、次のようになります。マークスイープなどの他の戦略はいつですか?
- Cにlibが実装された共有ptrはありますか?
ありがとう。
厳密に言うとわかりませんが、shared ptr をガベージ コレクションの戦略として扱いたいと思います。
ここで 2 つの質問があります。
ありがとう。
C でガベージ コレクションが必要な場合は、Hans Boehmガベージ コレクション ライブラリを参照してください。
共有 ptr を使用すると、オブジェクトの削除を処理する必要性がほとんどなくなりますが、いくつかの複雑な問題があります。一度に 1 つの共有ポインターしかポインターを保持できません。Boost の smart_ptr ポインター処理と関連クラスも参照してください。
ただし、shared_ptr と Boost は C++ です。これを C で実現するには苦労するでしょう。shared_ptr は、その魔法を実現するために演算子のオーバーロードに依存しています。演算子のオーバーロードがなければ、誰かがどこかでポインターのコピーを保持しているかどうかを知る方法がありません。(これは C++ でも問題ですが、コード全体で shared_ptr を使用すると、演算子のオーバーロードによってリスクが軽減されます。)
代わりにハンス・ベームを絶対にお勧めします。
これについて語っている良い記事がいくつかあります。
前 StackOverflow に関する同様の質問:ガベージ コレクションと共有ポインター
また、scoped_ptr を調べることをお勧めします。違いは次のとおりです: shared_ptr と scoped_ptr