「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Boehm のガベージ コレクターを C++ 標準ライブラリと統合するにはどうすればよいですか?

Boehm のガベージ コレクターを C++ 標準ライブラリと統合するにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:864

How to Integrate Boehm\'s Garbage Collector with the C   Standard Library?

ベーム ガベージ コレクターと C 標準ライブラリの統合

ベームの保守的なガベージ コレクターを C 標準ライブラリ コレクションとシームレスに統合するには、主に 2 つのアプローチがあります。 :

演算子 ::new

再定義 このアプローチには、ベームの GC を使用するための演算子 ::new の再定義が含まれます。ただし、既存の C コードと競合する可能性があり、異なるコンパイラ間では移植できない可能性があります。

明示的なアロケーター引数

演算子 ::new を再定義する代わりに、次のように使用できます。カスタム アロケータを指定するための標準ライブラリ コレクションの 2 番目のテンプレート引数。この引数は、コレクションの内部データ構造にメモリを割り当てる方法を制御します。

std::vector の例

次のコードは、std:: で gc_allocator を使用する方法を示しています。ベクトル:

#include 
#include 

std::vector> myVector(10); // Allocate vector with GC-specific allocator

std::string Integration

std::string の場合、GC_malloc_atomic を使用して内部文字配列を明示的に割り当てることができます。

#include 
#include 

std::string myString((char*)GC_malloc_atomic(10), 10); // Allocate string with GC_malloc_atomic

で文字列を割り当てます。注:

Boehm GC を g と統合するときに、operator ::new を再定義することは一般的にお勧めできません。代わりに、移植性と互換性を高めるために、明示的なアロケータ引数のアプローチを使用することを好みます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3