我的android原生代码面临崩溃问题。
我的应用程序类似于这个场景中描述的应用程序(点击这里)。
Java层通过调用一些本地API来调用本地层并启动一些进程。
本机调用在本机中启动线程进行处理时立即返回。
一旦处理完成,本机线程将调用java函数(回调函数)来通知结果。这是通过使用JNI函数和使用*jvm->AttachCurrentThread()来完成的。
我从日志中观察到的堆栈跟踪转储是,它甚至没有完成处理,它总是在malloc或free(在一些malloc之后或在一些free之后不一致)时崩溃。
是否有办法找到内存腐败在android的本机代码?
正如上面的链接所提到的,我尝试通过添加
来解决这个问题。LOCAL_EXPORT_LDLIBS += -lc
标志。可文件。但这没有帮助,我仍然能够观察到崩溃。
如果有人知道同样的解决方案,请告诉我。
p。S:我用于本地处理的代码已经完全针对其他产品(不是在android上)进行了测试。尝试移植到android时遇到的问题。
谢谢,问候,
SSuman185
我发现了问题,实际上memset()是在释放内存后完成的。令人惊讶的是,这些代码已经发布,并且在其他平台上运行良好。但是它会导致Android系统崩溃。