C 標準ライブラリでの Boehm ガベージ コレクターの使用
Boehm の保守的なガベージ コレクターを利用するマルチスレッド C アプリケーションを開発するには、次の手順を実行します。考慮すべきアプローチはいくつかあります。
1.演算子 ::new:
の再定義 1 つのオプションは、グローバル演算子 ::new をベームのバージョンとして再定義することです。ただし、このアプローチは他のライブラリ コンポーネントに干渉する可能性があるため、通常はお勧めできません。
2.明示的アロケータの使用:
または、Boehm の gc_allocator テンプレートを STL コレクション クラスで利用できます。明示的なアロケーターは、割り当てに使用されるメモリ マネージャーを指定し、内部データと STL コンテナーの個々の要素の両方が GC 割り当てされるようにすることができます。
3.カスタム コレクションの作成:
よりカスタマイズされたソリューションの場合は、STL テンプレート クラスに基づいてカスタム コレクションを作成しますが、アロケーター テンプレート引数として gc_allocator を使用します。これにより、Boehm の GC_malloc_atomic 関数を使用して、std::string などの STL コンテナの内部配列を割り当てることができます。
4。 std::string:
std::string の内部データを GC 割り当てするには、gc_allocator で Basic_string テンプレートを使用して独自の文字列を定義できます。演算子 [] をオーバーライドすると、内部 char バッファにアクセスし、GC_malloc_atomic.
5 を使用してそれを割り当てることができます。 g に関する潜在的な問題:
Boehm の GC は時間の経過とともに安定性が向上しましたが、 g によってコンパイルされた複雑なアプリケーションでの使用はまだ推奨されない可能性があります。ただし、gc_allocator を利用する提供された例 (myvec.cc) は、プレーンな malloc または ::operator new を使用しなくても正常にコンパイルされます。 C 11 標準には、
以上がBoehm のガベージ コレクターを C 標準ライブラリで使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。