因为项目用到JNI,在调用本地方法时出了点问题,一直报这个错
08-19 11:34:01.136: A/libc(6974): @@@ ABORTING: HEAP MEMORY CORRUPTION IN tmalloc_large addr=0x5c5f9cb8
08-19 11:34:01.161: A/libc(6974): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 6974 (m.auto.activity)
或者运行6,7秒后程序就无响应了,因为这个问题,随便把JNI研究了一下,先在这里把这个问题记录下来,给遇到同样问题的朋友一些参考:
通过调试,发现问题出在调用这个本地方法时public static native double[] get_list();时出的问题

在使用JNI过程中,调用本地方法时遇到数组类型转换问题,具体表现为使用`new jdouble(len)`与`new jdouble[len]`的不同导致数组越界。分析指出,`new jdouble(len)`会为一个double变量分配空间并赋值len,而`new jdouble[len]`则为len个double分配空间但不赋初值。数组越界在C语言中不会被自动检查,可能导致程序错误。博主分享了遇到的问题及解决思路,希望对遇到相同问题的人有所帮助。
最低0.47元/天 解锁文章
818

被折叠的 条评论
为什么被折叠?



