不稳定数据阵列中的未知错误

时间:2012-10-10 05:52:57

标签: java-native-interface

这个jni正在运行,但我可能有内存泄漏问题(我认为),

任何人都可以帮助释放下面的内存:

class arrayCls = env->GetObjectClass(Array1);
len11 = env -> GetArrayLength(Array1);
jintArray dim1= (jintArray) env->GetObjectArrayElement(Array1, 0);
len12 = env -> GetArrayLength(dim1);

localArray1= new jint*[len11];
for(jint i=0; i<len11; ++i){ 
    jintArray oneDim1=  (jintArray)env->GetObjectArrayElement(Array1, i); 
    jint *element1=env->GetIntArrayElements(oneDim1, 0); 

    localArray1[i] = new jint[len12]; 
    for(jint j=0; j<len12; ++j) { 
        localArray1[i][j]= element1[j]; 
        env->ReleaseIntArrayElements(oneDim1, element1, 0); 
    } 
} 

1 个答案:

答案 0 :(得分:1)

这是错误:

for(jint j=0; j<len12; ++j) { 
    localArray1[i][j]= element1[j]; 
    env->ReleaseIntArrayElements(oneDim1, element1, 0); 
} 

你必须搬家

env->ReleaseIntArrayElements(oneDim1, element1, 0); 

在循环之外。无论如何你应该更喜欢GetIntArrayRegion(),它会避免这个错误,因为它是无状态的。