Старая форма GLUT сделала так, что выполнение вашей программы никогда не возвращалось после вызова glutMainLoop
.FreeGLUT избавляется от этого, но только если вы специально попросите об этом перед вызовом glutMainLoop
:
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION);
Это означает, что когда вы в конце концов вызовете glutLeaveMainLoop
, FreeGLUT продолжит с того места, где было glutMainLoop
вызывается, как обычный вызов функции.
Так что, если вы выделите память до glutMainLoop
, вы можете удалить эту память впоследствии.
При этом:
Я использую int *ptr = new int[n]
для хранения координат вершин
Почему это не std::vector<int> mem(n);
вместо указателя?Вы все еще можете получить указатель на память, выполнив &mem[0]
.И он будет убирать за собой.