JNI 处理数组
来源:互联网 发布:手机淘宝外卖 编辑:程序博客网 时间:2024/05/01 15:02
- 外理数组
数组分为两种:
1, 基本类型的数组
2,对象类型(Object[])的数组
一个能通用于两种不同类型数组的函数:GetArrayLength(jarray array)
Get<TYPE>ArrayElements(<TYPE>Array arr, jboolean* isCopied);
这类函数可以把JAVA基本类型的数组转换到C/C++中的数组,有两种处理方式,一种是拷贝一份传回本地代码,另一个是把指向JAVA数组的指针直接传回本地代码,处理完本地化的数组后,通过Release<TYPE>ArrayElements来释放数组
Release<TYPE>ArrayElements(<TYPE>Array arr, <TYPE>* array, int mode)
用这个函数可以选择将如何处理JAVA跟C++的数组,是提交,还是撤销等等,内存释放还是不释放等
mode可以取下面的值:
0 ->对JAVA的数组进行更新并释放C/C++的数组
JNI_COMMIT ->对JAVA的数组进行更新但不释放C/C++的数组
JNI_ABORT ->对JAVA的数组不进行更新,释放C/C++的数组
Get<TYPE>ArrayRegion(<TYPE>Array arr, jsize start, jsize len, <TYPE>* buffer)
在C/C++预先开辟一段内存,然后把JAVA基本类型的数组拷贝到这段内存中,与GetStringRegion原理相同
Set<TYPE>ArrayRegion(<TYPE>Array arr, jsize start, jsize len ,const <TYPE>* buffer)
把JAVA基本类型的数组中的指定范围的元素用C/C++的数组中元素来赋值
- 处理数组----对象类型数组
JNI没有提供直接把JAVA的对象类型数组(Object[])直接转到C++中的jobject【】数组的函数,而是直接通过Get/SetObjectArrayElement这样的函数来对JAVA的Object[]数组进行操作
注: 使用上述函数不用释放资源
NewObjectArray可以通过指定长度跟初始值来创建某个类的数组
- JNI 处理数组
- JNI层数组的处理
- JNI中多维数组的处理
- JNI数组传递与异常处理
- JNI数组传递与异常处理
- JNI数组传递与异常处理
- JNI数组传递与异常处理
- JNI数组传递与异常处理
- JNI数组传递与异常处理
- JNI数组传递与异常处理
- java学习之JNI 学习五 处理数组
- JNI调用——处理Java的数组
- JNI 学习笔记(三)-- JNI访问数组、引用、异常处理、缓存策略
- [android jni]访问数组(JNI)
- NDK-JNI语法-数组处理+全局引用+异常处理+缓存策略
- JNI操作数组
- JNI操作数组
- jni数组操作
- linux下shell编程(二)------修订版
- mysqldump: Couldn't execute 'show events': Cannot proceed because system tables used by Event Schedu
- Java 垃圾回收 GC
- 浏览器的工作原理:新式网络浏览器幕后揭秘
- 网站开发要知道的事——关于post和get的区别
- JNI 处理数组
- rc.local自启动学习
- 枚举USB设备(代码)
- Linux下使用valgrind做内存泄露检测及绘制函数调用图
- AsyncTask onPostExecute 未执行原因
- Vaadin入门(1)
- oracle取当年天数与当月天数及指定月的天数
- Linux设备驱动学习笔记
- C++四种cast操作符