c++ - Havok 退出析构函数中的调用导致未处理的异常

标签 c++ havok

当我使用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 一无所知,但看来您需要完全按照该顺序调用两个退出函数:

  1. hkBaseSystem::quit();
  2. hkMemoryInitUtil::quit();

因此,如果您将第二次调用移动到 HKUTI 析构函数中,它将首先被调用。在析构函数中按上面的顺序放置两个调用(您可能想确保只有一个 HKUTI 实例!),或者移动 delete myhk; 下面 hkBaseSystem::quit();

关于c++ - Havok 退出析构函数中的调用导致未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4786375/

相关文章:

c++ - 编译 Havok 演示

c++ - 尝试使用 Havok Project Anarachy 创建项目,但无法构建

c++ - boost::signals2 插槽作为非静态函数成员?

c++ - 嵌套模板类中的模板函数

c++ - 具有 qml 函数和 c++ 插槽的最佳方法,反之亦然

c++ - 使用 OpenCV 和 ffmpeg 编写 MP4 文件

c++ - Qt 远程对象

c++ - 仅在 Havok SDK 中发生的链接器错误