对于下面从 jni 为 java 创建一个 int 数组的代码,为什么我们需要创建一个 temp[] 数组,为什么我们不能只填充 result[] 数组并将其返回给 java.lang. 是因为 java 和 jni 应该使用不同的内存空间因此两个不同的指针?如果是这样,这样做的目的是什么?谢谢
JNIEXPORT jintArray JNICALL Java_ArrayTest_initIntArray(JNIEnv *env, jclass cls, int size)
{
jintArray result;
result = (*env)->NewIntArray(env, size);
if (result == NULL) {
return NULL; /* out of memory error thrown */
}
int i;
// fill a temp structure to use to populate the java int array
jint temp[256];
for (i = 0; i < size; i++) {
temp[i] = 0; // put whatever logic you want to populate the values here.
}
// move from the temp structure to the java structure
(*env)->SetIntArrayRegion(env, result, 0, size, temp);
return result;
}