我现在正在学习 boehm gc c++ 接口。不使用它,只是好奇。我按照官方的例子,写我的类可以被GC,在析构函数中,有一个输出,所以我可以判断一个实例是否被GC。但只有当我使用循环创建多达一千个或更多的实例时才能触发 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 收集,或者如果我使用错误,请告诉我如何以正确的方式使用它。非常感谢。