当我使用havok编程时,程序退出时我崩溃了,
我将 havok 函数封装到一个 C++ 类中以简化主函数,并在我的类的析构函数中调用 havok quit 函数,但这可能会导致“未处理的异常”崩溃。
如果我把havok的quite函数从destructor中取出来,放在main函数中就可以了。我只是想知道为什么它在析构函数中不起作用但在主函数中起作用?
我的代码是:
int HK_CALL main(int argc, const char** argv)
{
HKUTI *myhk = new HKUTI(setupPhysics, 1000);
myhk->run(displayGraphics, 60, 30);
delete(myhk);
myhk = NULL;
hkBaseSystem::quit();
hkMemoryInitUtil::quit();
return 0;
}
2个havok退出函数是hkBaseSystem::quit();和 hkMemoryInitUtil::quit(); 如果我像上面的代码一样在 main 函数中调用它,程序将完美运行,但如果我将 2 quit 函数放在类 HKUTI 的析构函数中,当程序试图退出时它会崩溃。我看不出这两种方法有什么不同,谁能告诉我 C++ 析构函数中发生了什么?
非常感谢
最佳答案
我对 Havok 一无所知,但看来您需要完全按照该顺序调用两个退出函数:
hkBaseSystem::quit();
hkMemoryInitUtil::quit();
因此,如果您将第二次调用移动到 HKUTI
析构函数中,它将首先被调用。在析构函数中按上面的顺序放置两个调用(您可能想确保只有一个 HKUTI
实例!),或者移动 delete myhk;
下面 hkBaseSystem::quit();
。
关于c++ - Havok 退出析构函数中的调用导致未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4786375/