使用数组的JNI任务

时间:2012-04-04 19:49:13

标签: java c arrays java-native-interface

我有一个关于JNI的问题:

JNIEXPORT jintArray JNICALL Java_MainClass_intArrayMethod
    (JNIEnv *env, jobject obj, jintArray array) {
    jintArray result;
    jsize len = (*env)->GetArrayLength(env, array);
    jint *body =(*env)->GetIntArrayElements(env, array, 0);
...
}

我可以做一些循环并修改body的值然后:

result = (*env)->NewIntArray(env, nb_of_subscribers*tags);
(*env)->SetIntArrayRegion(env, result, 0, tags*nb_of_subscribers, body);
(*env)->ReleaseIntArrayElements(env, array, body, 0);

换句话说,我可以修改body的内容吗?

float *max = (float*)malloc(sizeof(float)*tags);
for(k=j;k<nb_of_subscribers*tags;k=k+tags)
if (body[k]>max[j%tags]) max[j%tags]=body[k];
for(k=0;k<nb_of_subscribers*tags;k=k+tags)
body[k]=(float)(body[k]/max[j%tags]);

身体的价值不会改变。如何覆盖它?

2 个答案:

答案 0 :(得分:1)

  

我可以修改身体的内容吗?

当然,但这是你真正想做的吗?无论如何你要返回一个新数组,为什么还要修改参数数组?

答案 1 :(得分:0)

自动覆盖body的值,没有任何限制。