C 標準ライブラリでベームのガベージ コレクターを使用する
このコンテキストでは、開発者は、ベームのガベージ コレクターをマルチ ライブラリで利用したいという願望を表明しています。スレッド化された C アプリケーション。彼らは、std::vector や std::map などの C 標準ライブラリのアルゴリズムとコレクションを利用することを意図していますが、潜在的な競合を懸念しています。
演算子 new の再定義
質問者は、ベームの実装で演算子 new を再定義することを検討しています。ただし、明示的なアロケーター引数を gc_allocator に設定してコレクション テンプレートを使用することも考慮されています。
アロケーター引数の役割
std::vector の 2 番目のテンプレート引数ベクターの内部データを管理するために使用されるアロケーターを定義します。デフォルトでは、システムの malloc を使用してメモリを割り当てますが、gc_allocator などの代替アロケータを使用するようにカスタマイズできます。
std::string の処理
開発者は懸念を表明std::string インスタンスの GC 割り当てについて。彼らは、basic_string と gc_allocator を使用してカスタム文字列を作成することを提案しています。あるいは、内部 char 配列の GC 割り当てについて問い合わせます。
GC 互換性に関するアドバイス
質問者は、Boehm GC を、によってコンパイルされたアプリケーションで使用するかどうかについての推奨事項を求めています。 g .
考えられる解決策
開発者は、gc_allocator と new(GC) を使用してすべてのヒープ割り当てが GC 管理されるようにする独自の解決策コードを共有します。
補遺
開発者は、C でガベージ コレクション サポートを提供することを目的とした、提案されている n2670 仕様について説明します。ただし、この機能は現在、GCC や Clang などの主要なコンパイラには実装されていないと彼らは指摘しています。
以上が記事の質疑応答の性質を考慮した、いくつかのタイトルのオプションを次に示します。 **の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。