我正在使用NativeActivty
和native_app_glue为Android编写OpenGL
游戏。很难确定何时是删除由OpenGL
分配的堆分配对象和对象的最佳时间。
在NDK的NativeActivity
示例中,他们似乎不会在完成对象后删除对象。现在我用两个删除函数删除我的对象:一个用于OpenGL
个对象和一个常规对象。我将它们分开,因为似乎只有事件处理线程才能删除OpenGL
个对象。我分配的常规对象将被普通删除功能删除。
当用户按下后退按钮并返回应用程序时,OpenGL
资源将被删除,应用程序崩溃(尽管我认为应该由APP_CMD_INIT_WINDOW
重新分配)。这让我想知道我是否应该删除对象,因为看起来我不应该删除OpenGL
个对象。
我们是否应该使用NDK删除堆分配的对象。我知道NDK应用程序仍然是沙箱并且有一个JVM
进程,这是否需要内存管理?
编辑: 我的应用程序崩溃的另一个实例是当游戏状态完成时删除对象。例如,从实际游戏到菜单。在返回游戏时,即使重新分配对象,应用程序也会崩溃。它似乎只工作一次。
答案 0 :(得分:1)
事实证明,应用程序崩溃绝不是由于删除了堆分配的对象或OpenGL对象。一些被删除但仍包含在向量中的指针是导致问题的原因。但是,使用NDK删除对象似乎没有任何问题。