JNI 数组返回值问题记录
来源:互联网 发布:k姐陈洁淘宝为什么火 编辑:程序博客网 时间:2024/06/06 05:54
JNIEXPORT jintArray JNICALL Java_com_example_zhongtao_jniday13_Hello_arrElement(JNIEnv *env, jclass jobj, jintArray jarry){ //获取数组长度 int len=(*env)->GetArrayLength(env,jarry); LOGD("array len==%d",len); jintArray jin_arr=(*env)->NewIntArray(env,len); //定义一个jintArray数组 //获取数组首地址 //java中的boolean,用来表示GetIntArrayElements()执行完后是否创建副本,没有创建返回NULL,创建了返回True,一般不用这个参数直接传一个NULL// jboolean isCopy=NULL; jint* p=(*env)->GetIntArrayElements(env,jarry,NULL); int i; for(i=0;i<len;i++){ *(p+i) +=10; LOGD("*p==%d",(*(p+i))); } //将p的值赋给新数组jin_arr (*env)->ReleaseIntArrayElements(env,jin_arr,p,0); //获取到了数组的首地址,通过指针操作每个元素之后,jarry里的每一个元素已经被修改,所以可以直接返回jarry; return jin_arr; }上述代码中碰到的问题就是使用指针p获取到jarry数组的首地址,然后对p进行操作,本来正常情况下对P操作后就是直接对jarry进行了操作返回值直接返回jarry就可以了,但是我的返回值没有发生变化。寻求大神帮忙后,说是重新new一个数组,重新给他赋值就行了。jintArray jin_arr=(*env)->NewIntArray(env,len); //定义一个jintArray数组//将p的值赋给新数组jin_arr(*env)->ReleaseIntArrayElements(env,jin_arr,p,0);以后可以这样操作了。至于为什么不能直接返回形参还在寻找答案。
阅读全文
0 0
- JNI 数组返回值问题记录
- jni返回结构体数组
- Jni返回结构体数组
- 5.4jni返回结构数组
- JNI 线程问题记录
- JNI之c/c++返回中文给java 乱码问题以及java数组在c排序
- C#学习记录---ExecuteNonQuery()返回值问题
- Android JNI (问题记录)
- 工作记录--jni小问题
- JNI开发之创建int数组返回
- 二维数组返回值的问题
- 函数返回数组问题
- C++ 返回数组问题
- Chap6: JNI传递返回值
- JNI返回值方法总结
- Android JNI 自己遇到的问题记录
- Oracle 存储过程返回数组记录集
- recvfrom问题记录--返回值<=0狂打印
- 【Codeforces 814 B. An express train to reveries】+ 构造
- 大数据-十一
- MQTT haproxy 负载均衡代理服务
- C++学习笔记-----用位运算实现加减乘除
- Poedu_Windows_异步IO(2)
- JNI 数组返回值问题记录
- 程序员实用网站集锦
- Linux操作系统下,通过系统调用和库函数分别实现对文件的拷贝
- 【HTML5】WebSocket和SSE
- Latex 数学公式
- Netty实现简单HTTP服务器
- firewall
- 线程间数据传输
- python处理json