上節目結束這個簡單的代碼崩潰(Qt的5.9.1,5.4.1 GCC):shared_ptr的<QCoreApplication>崩潰
#include <QCoreApplication>
#include <memory>
std::shared_ptr<QCoreApplication> manager;
int main(int argc, char *argv[])
{
manager = std::make_shared<QCoreApplication>(argc, argv);
}
我知道通常的方法是在堆棧上聲明一個QCoreApplication
實例並在main()
結束時銷燬它,但我的用例如下所示:我正在用Boost.Python封裝一個使用Qt的庫,並且在python模塊加載時我像上面那樣初始化Qt。但是,除非強制用戶撥打finalize()
方法,否則我無法銷燬QCoreApplication
。
想法是當庫(python模塊)被卸載時被破壞,但這似乎不起作用。上述預期,如果是這樣,爲什麼? 「破壞秩序問題」是我的第一個猜測,但在這種情況下,這應該被視爲一個錯誤?
應用程序對象是一個全局變量/單例(你可以使用'qApp'或'QCoreApplication :: instance()'來獲得它,初始化可能會做很多事情,我不確定你是否真的卸載它。最好從Python創建應用程序實例,然後使用它。 –