私は鉱山の学習プロジェクト(C言語)に取り組んでおり、それをC++に移行して余分な学習のポイントを得ようと考えていました。その中には、特定のオブジェクト群のためのガベージコレクションシステムが含まれています。これは、Cでは、通常は大きなmalloc/mmapで実装し、簡単な素朴なマークアンドスイープで行います(参照やそのようなものを特定できます既に)。おもちゃのガベージコレクション:オペレータの新規/削除は十分ですか?
私の問題は、そのアイデアをC++に移植することを検討していましたが、メモリ管理スキームの理解が十分に安全ではないと感じています。
これまで私は、大きなメモリプールを割り当てて演算子newとoverloadingを基本クラスで削除し、自分のメモリプールのグラブ/リリース関数を呼び出し、ガベージコレクタの掃引フェーズでオブジェクトを削除してみました。それで十分ですか?私がここで見逃している隠された落とし穴は何ですか?
編集:明らかにするために、私は割り当てられたオブジェクトの寿命を把握することができるので、gc abiを使う必要はありません。オブジェクトはめったにC++コードで操作されず、それらを使用するコードはスタックを検査する必要なしに使用されていることを通知することができます。
これについてはBjarne Stroustrupのコメントを参考にしてください。http://www.stroustrup.com/C++11FAQ.html#gc-abiまた、Hans Boehmのページへのリンクもあると思いますそれは優れた出発点です。 –