JNI操作数组

1. jType* GetArrayElements(Array array, jboolean* isCopy)

1.1. isCopy

- true:数据会拷贝一份,返回的数据的指针是副本的指针
- false:不使用,可以设置为 0, NULL



2. void ReleaseArrayElements(jTypeArray array, j* elems, jint mode)

释放操作,只要有调用GetArrayElements方法,就必须要调用一次对应的ReleaseArrayElements方法,因为这样会删除掉可能会阻止垃圾回收的JNI本地引用

2.1. mode

GetArrayElements中的isCopy为true,我们才需要设置mode,为false我们mode可以不用处理,赋值0

- 0:更新Java堆上的数据并释放副本使用所占有的空间。
- JNI_COMMIT:提交,更新Java堆上的数据,不释放副本使用的空间。
- JNI_ABORT:撤销,不更新Java堆上的数据,释放副本使用所占有的空间。



3. void GetArrayRegion(JNIEnv *env, ArrayType array,jsize start, jsize len, Type *buf)

和GetStringRegion的作用是相似的,事先在C/C++中创建一个缓存区,然后将Java中的原始数组拷贝到缓冲区中去。



4. void SetArrayRegion(JNIEnv *env, ArrayType array,jsize start, jsize len, const Type *buf)

上面方法的对应方法,将缓冲区的部分数据设置回Java原始数组中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值