我有以下代码:
jobjectArray objects; //function argument, actually a byte[][]
jbyteArray* arrays = malloc(sizeof(jbyteArray), 2); // Assume 2
for(int i = 0; i < 2; ++i) {
arrays[i] = (jbyteArray)env->GetObjectArrayElement(objects, i);
}
// Do stuff with arrays.
// Do I have to do this?
// for(int i = 0; i < 2; ++i) {
// env->DeleteLocalRef(arrays[i]);
// }
free(arrays);
这是否足以避免泄漏内存/保留杂散引用?或者我也应该调用DeleteLocalRef?
编辑: 我确实在IBM SDK for Java的帮助中找到了这个引用,它指出当函数返回Java时它们会被自动清理。但是如果没有自动垃圾收集,引用可能会泄漏。