私は今、boehm gc c++ インターフェイスを学んでいます。それを扱っていない、ただ興味があるだけです。そして、私は公式の例に従い、GC される可能性のあるクラスをデストラクタに書きます。出力があるので、インスタンスが GC であるかどうかを知ることができます。ただし、ループを使用して 1,000 個以上のインスタンスを作成した場合に限り、gc コレクションをトリガーできます。コードが次のように単純な場合:
class test_gc : public gc
{
public:
~test_gc()
{
cout << "~test_gc()" << endl;
}
};
int main()
{
GC_INIT();
::new (GC) test_gc();
GC_gcollect();
return 0;
}
デストラクタが呼び出されないようです。「~test_gc()」は出力されません。また、コンパイラの最適化はオフになっています。私はいくつかのグーグルを行いましたが、公式の例以外はほとんど何も見つかりませんでした。
プログラムを終了する前に gc コレクションを強制する方法を教えてください。または、間違って使用した場合に正しい方法で使用する方法を教えてください。どうもありがとう。