0

我有以下代码:

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 时会自动清理它们。但是如果没有自动垃圾回收,引用可能会泄漏。

4

0 回答 0