ReleaseFloatArrayElements和DeleteLocalRef之间有什么区别

时间:2013-05-03 10:15:54

标签: c++ memory-management android-ndk

我正在尝试使用JNI做一个Android应用程序。我有一个方法,将数组作为输入(jfloatArray featurePoints):

jfloat* flt1 = env->GetFloatArrayElements(featurePoints,0);

使用此阵列后,我试图释放内存。我应该使用

env->ReleaseFloatArrayElements(featurePoints, flt1, 0);

env->DeleteLocalRef(featurePoints);

1 个答案:

答案 0 :(得分:1)

当您使用GetXxArrayElements()撤消工作时,需要调用ReleaseXxArrayElement()。

env->ReleaseFloatArrayElements( featurePoints , (jfloat *)flt1, 0);
// we cleanup local ref 
env->DeleteLocalRef(featurePoints);