我正在开发一款Android应用程序,需要大量的内存分配(许多图像缓冲区)。我正在使用Android NDK进行开发。但是我遇到了奇怪的崩溃。我希望这不是重复的帖子(在查看以前的帖子后)。
应用程序崩溃,出现以下错误:I/DEBUG(187): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000004
以下是解决此问题时需要考虑的几个方面:
1. 我之前遇到过分段错误,并且已经解决了它。
2. 我非常确定我正在正确地分配和释放内存,因为我在Windows上使用相同的设置,确认没有内存泄漏,并且我没有访问任何未分配的位置(无解引用,无错误指针)。在Windows上测试期间没有发现任何内存损坏。
3. 我也确信JNI调用的分配和释放在代码中的适当位置。内存仅在使用完成后清除。
4. 回溯显示每次崩溃发生时都有不同的API调用,其中发生错误。我已经记录下日志并且没有发现空指针,它们都符合预期。
5. 此崩溃非常随机。偶尔会发生,在应用程序内长时间运行时或在应用程序内执行许多操作时可能会发生。但大部分时间它都可以正常工作。
请问有人能够建议我的代码中内存是如何受损的,可能是什么原因导致了这种情况?
应用程序崩溃,出现以下错误:I/DEBUG(187): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000004
以下是解决此问题时需要考虑的几个方面:
1. 我之前遇到过分段错误,并且已经解决了它。
2. 我非常确定我正在正确地分配和释放内存,因为我在Windows上使用相同的设置,确认没有内存泄漏,并且我没有访问任何未分配的位置(无解引用,无错误指针)。在Windows上测试期间没有发现任何内存损坏。
3. 我也确信JNI调用的分配和释放在代码中的适当位置。内存仅在使用完成后清除。
4. 回溯显示每次崩溃发生时都有不同的API调用,其中发生错误。我已经记录下日志并且没有发现空指针,它们都符合预期。
5. 此崩溃非常随机。偶尔会发生,在应用程序内长时间运行时或在应用程序内执行许多操作时可能会发生。但大部分时间它都可以正常工作。
请问有人能够建议我的代码中内存是如何受损的,可能是什么原因导致了这种情况?