这个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);
}
}
答案 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(),它会避免这个错误,因为它是无状态的。