現在我正在學習boehm gc C++接口。不用它,只是好奇而已。我遵循官方的例子,寫我的類什麼可以GCed,在析構函數,有一個輸出,所以我可以告訴一個實例是否GCed或不。 但是,只有當我使用一個循環來創建多達千位或更多的實例才能觸發gc集合時。如果代碼是這樣簡單:如何在程序退出前強制boehm 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集合,或者如果我錯誤地使用它,請告訴我如何正確使用它。 非常感謝。
我能找到一些所謂的「輸出」的情況是由gc_cleanup做出的。 –