我正在开发一个需要大量内存分配(大量图像缓冲区)的 android 应用程序。为此,我正在使用 Android NDK。我遇到了一个奇怪的崩溃。我希望这不是重复的帖子(在浏览了以前的帖子之后)
应用程序崩溃并出现以下错误:I/DEBUG(187): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000004
我以前遇到过分段错误并已解决。
我很确定我正在正确分配和取消分配内存,因为我为 Windows 设置了相同的设置,确认没有内存泄漏并且我没有访问任何未分配的位置。(没有取消引用,没有错误的指针)。在 Windows 上测试时未发现内存损坏。
我还确定为分配和释放进行的 JNI 调用在代码中的适当位置。只有在使用完成时才会清除内存。
每次崩溃发生时,Backtrace 都会显示不同的 API 调用,以及发生错误的位置。我已经记录了日志,并且没有一个指针为空,它们与预期的一样。
此崩溃非常随机地发生。偶尔。 一个。当我长时间在应用程序内时。 乙。在应用程序内部执行大量操作时。但它大部分时间都运行良好。
谁能建议我的代码中的内存是如何损坏的。可能是什么原因造成的。