我是否需要在使用NewIntArray创建的数组上调用ReleaseIntArrayElements?

Mat*_*las 11 java java-native-interface

我有一个本地方法,可以对位图进行一些操作.在方法内部,我通过方法调用获取图像数据,该方法调用将数据写入jintArray我创建的参数NewIntArray:

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

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

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

use*_*421 13

你不需要做任何事情.它是一个本地引用,当您的JNI方法退出时它将被清除.正如爱德华汤普森暗示的那样,ReleaseIntArrayElements()与之相反,GetIntArrayElements().它没有其他功能.