2

私のfreeglutプロジェクトでは、たくさんのメモリを割り当てましたが、ユーザーがfreeglut(またはglut)ウィンドウを閉じたときにそれを解放する方法がありません。何かアイデアはありますか?

4

2 に答える 2

8

FreeGLUTは、これに対していくつかのソリューションを提供します。

  1. を呼び出して関数を返すことができglutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION)、呼び出し後に必要なすべてのメモリを解放できます。glutLeaveMainLoop()glutMainLoop()glutMainLoop()

  2. 呼び出す代わりに、次のglutMainLoop()ように独自のイベントループを作成できます。

    bool running = true;
    while (running)
    {
        glutMainLoopEvent();
    }And whenever you want to exit application - just set running variable to false, and free the allocated memory after while loop.
    
  3. または、何もできません。最新のOSは、プロセスの終了時に、割り当てられたすべてのメモリの割り当てを正しく解除します。もちろん、ログファイルへの書き込み、ネットワークパケットの送信など、終了時に特別なことを行う必要がある場合は、手動で行う必要があります。

于 2012-06-20T06:52:53.673 に答える
2

メインループの前にexit関数をatexit(onexit)に登録します。

于 2013-11-10T23:00:59.073 に答える