同样的代码不同API设备居然越界?

同样的代码不同API设备居然越界?

在给安卓4.4做ui适配的时候为了测试界面,于是跑到安卓4.4虚拟机上,结果崩了?我安卓7.0明明正常的呀,开始还以为是ui代码的问题,结果一看给我整蒙了
同样的代码不同API设备居然越界?
同样的代码不同API设备居然越界?
图一是API19,图二是API24;好家伙,无故越界

这种问题在网上查了很久,都没有遇到过相同问题的,所以自己找了办法:

根据我查到的资料,老版本的安卓内存机制存在缺陷(一看就知道嘛,那么多GC),我猜测是由于内存分配问题导致程序内数据异常,然后就出现了访问越界

(当时在算法中正常加载的代码中加了个Log.i()就越界了,很明显Log.i()不会是导致越界的根本原因嘛)

同样的代码不同API设备居然越界?

于是我尝试想办法通过代码优化解决这个问题,但是貌似不太行得通,始终不行。

于是开始尝试其他办法,根据资料,安卓分配内存Java层和native层是分开的,所以我尝试把出问题的那个方法用C++写进native方法,然后居然成了,(LogCat仍然有GC操作,但是程序无异常)

同样的代码不同API设备居然越界?
同样的代码不同API设备居然越界?

希望这条博客能给有缘翻到的你带来帮助