android ndk开发SIGSEGV错误

来源:互联网 发布:淘宝客推广计划怎么写 编辑:程序博客网 时间:2024/06/05 19:58

最近进行ndk开发,偶尔会报Fatal signal 11(SIGSEGV),这个问题非常诡异,诡异就在偶然出现,并且在不同的地方。查看日志发现都是内存malloc,free方面的错误,有opencv中的,有对std::vector进入插入分配内存引发的,有在jni函数中获取数组指针发生的,真的是让人摸不着头脑:


最终发现并不程序本身的问题。问题是heap size的限制,因为我的sdk是让java虚拟机回收java对象的时候自动delete它包装的c++对象,理论上没错。最后发现解决方法是及时将c++对象delete,new 一个c++后,不用了马上手动delete,不要依靠java虚拟机回收中对象中调用delete,gc可能不及时,造成内存超出限制。

阅读全文
0 0
原创粉丝点击