参考:https://stackoverflow.com/questions/2237147/copying-a-byte-buffer-with-jni
有两个方法:
GetByteArrayRegion
GetByteArrayElements
/ReleaseByteArrayElements
第一个方法,你需要在c层分配一个同样大小的byte数组,然后调用这个方法将java的byte数组的数据copy过去,然后只要管理c层的byte数组的内存即可。
第二个方法,你不需要在c层额外管理一个数组,你只需要创建一个指针变量,然后调用GetByteArrayElements
来将指针指向Java的字节数组对象,不用的时候调用ReleaseByteArrayElementes
来释放掉就行。
此外,可以用GetArrayLength
来获取字节数组的大小。