我现在正在学习Boehm GC C++接口。我并没有直接使用它,只是出于好奇。我按照官方示例编写了一些可供GC处理的类,在析构函数中输出一些东西,这样我就可以知道一个实例是否被GC处理了。
但是只有当我使用循环创建多达一千个或更多实例时,才会触发GC收集。如果代码像这样简单:
似乎析构函数从未被调用。没有“~test_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()”的输出。同时编译器优化关闭了。 我做了一些谷歌搜索,几乎什么都没找到除了官方例子。 请告诉我如何在程序退出之前强制进行垃圾收集,或者如果我使用错误,请告诉我如何正确使用它。 非常感谢。