0

我一直在努力修复我们游戏中的一些最终错误。游戏使用 Irrlicht 和 Bullet 物理的 Android 端口。

在 OS X 和 Windows 上尝试了相同的代码,没有任何问题。但是,当我们将代码移植到 Android NDK 时,现在出现随机崩溃。大多数崩溃都libc.so可能是空指针异常。我们不在scenenode->remove()我们的代码中使用,而是使用smgr->addToDeletionQueue.

崩溃是如此随机,以至于它发生在以下语句中。

  1. libc.so
  2. smgr->drawall()
  3. stepsimulation在子弹中。

当我们卸载一个关卡并加载下一个关卡或重新加载一个关卡时,90% 的时间都会发生错误。我们首先怀疑编译器并使用了stlport。应该提升图书馆的帮助吗?

我敢肯定,我提供的信息很少能猜出问题所在。但是由于相同的游戏代码在其他平台上运行良好,我只是想清除我对编译器相关差异的怀疑。

一个简单malloc的然后delete在 android ndk 中在删除时崩溃。因此,我想更好地了解我们正在努力解决的问题是否是与编译器相关的愚蠢问题。

4

1 回答 1

0

在摆弄这个问题几个星期后,我终于找到了问题的根源。

我像这样初始化了一个char数组

char data = new char[10];

然后考虑像往常一样用 '\0' 填充最后一个字符

data[10] = '\0';

抛出一个空指针异常。

当我在 Windows 中运行相同的代码时,我能够查明这个问题。即使在 Windows 上,在附加调试器的情况下运行时也不会出现问题。但是,当我通过直接打开 exe 运行应用程序时,它崩溃了。所以我不得不使用程序“应用程序验证器”来确定问题所在。

于 2012-05-25T06:21:31.220 回答