java - 使用数组的 JNI 任务

标签 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]);

body 的值不会改变。如何覆盖它?

最佳答案

can I modify the content of body?

当然可以,但这是您真正想要做的吗?反正你要返回一个新数组,为什么还要修改参数数组?

关于java - 使用数组的 JNI 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10018226/

相关文章:

C 以十六进制值初始化数组

Java整数到字节数组

java - 如何做一个字符串包含检查EL

C包含错误多重定义错误

在 Lex 中将八进制数转换为十进制数

c - 在 STM32F103C8 ('Blue Pill' 中通过 UART 传输数据时出现问题)

c - 如何访问不同程序中的变量值?

java - Hibernate 无法打开与 Oracle 11g 的连接?

java - 在 Glassfish v3 部署中,我可以在哪里放置符合 CDI 资格的候选人?

java - Groovy println then 从关闭中中断