havokを使ってプログラミングをしていると、プログラム終了時にクラッシュしてしまい、
メイン関数を単純にするために havok 関数を C++ クラスにエンベロープし、クラスのデストラクタで havok quit 関数を呼び出しますが、「未処理の例外」クラッシュにつながる可能性があります。
ハボックのかなりの関数をデストラクタから取り出してメイン関数に入れれば大丈夫です。デストラクタでは機能せず、メイン関数で機能するのはなぜだろうか?
私のコードは次のとおりです。
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(); 上記のコードのようにメイン関数で呼び出すとプログラムは完全に実行されますが、その2つのquit関数をクラスHKUTIのデストラクタに入れると、プログラムが終了しようとしたときにクラッシュします. その2つのアプローチの違いはわかりません。C++デストラクタで何が起こったのか教えてください。
どうもありがとう