11

我有一个在位图上做一些工作的本机方法。在方法内部,我通过一个方法调用获取图像数据,该方法调用将数据写入jintArray我创建的参数NewIntArray

jintArray pixels = env->NewIntArray(width * height);

我不需要将此数组返回给调用 Java 代码 - 它仅用于在此方法中进行处理。我需要打电话ReleaseIntArrayElementspixels?如果是这样,我应该为elems参数传递什么,因为我不需要将它复制回 Java 数组?

void (JNICALL *ReleaseIntArrayElements) (JNIEnv *env, jintArray array, jint *elems, jint mode);

4

2 回答 2

14

你不需要对它做任何事情。它是一个本地引用,当你的 JNI 方法退出时它会被清除。正如爱德华·汤普森(Edward Thompson)在上面暗示的那样,ReleaseIntArrayElements()它的逆函数是GetIntArrayElements().它没有其他功能。

于 2012-05-11T23:53:57.477 回答
1

您只需要发布参考:

jintArray pixels = env->NewIntArray(width * height);
...
env->DeleteLocalRef(pixels)
于 2016-09-08T09:02:19.940 回答