1

我正在使用NativeActivtynative_app_glueOpenGL为 Android 编写游戏。很难确定何时是删除堆分配对象和由OpenGL.

在 NDK 的NativeActivity示例中,他们似乎不会在使用完对象后删除它们。现在我用两个删除函数删除我的对象:一个用于OpenGL对象,一个用于常规。我将它们分开是因为似乎只有事件处理线程才能删除OpenGL对象。我分配的常规对象被正常的删除功能删除。

当用户按下后退按钮并返回应用程序时,OpenGL资源被删除并且应用程序崩溃(尽管我认为它们应该被重新分配APP_CMD_INIT_WINDOW)。这让我想知道我是否应该删除对象,因为看起来我不应该删除OpenGL对象。

我们是否应该使用 NDK 删除堆分配的对象。我知道 NDK 应用程序仍然是沙盒并且有一个JVM进程,这需要内存管理吗?

编辑:我的应用程序崩溃的另一个实例是在游戏状态完成时删除对象。例如从实际游戏到菜单。回到游戏后,即使对象被重新分配,应用程序也会崩溃。它似乎只工作一次。

4

1 回答 1

1

事实证明,应用程序崩溃从来不是由于堆分配对象或 OpenGL 对象的删除。一些被删除但仍包含在向量中的指针是问题的原因。但是,使用 NDK 删除对象似乎没有任何问题。

于 2014-05-31T15:46:02.707 回答