删除JNI中的全局引用

时间:2013-07-25 10:51:07

标签: java-native-interface

我不确定这意味着什么:

virtual ~Optimizer() {
    JNIEnv *env = getJNIEnv();
    env->DeleteGlobalRef(mJavaOptimizer);
    mJavaOptimizer = 0;
}

令我困惑的是我们删除全局引用然后将其设置为0。 是不是删除够了?为什么分配到0部分?

由于

1 个答案:

答案 0 :(得分:2)

在这段代码中,在C ++析构函数中,它没有实际用途。这只是一种编程模式。

在许多情况下,变量在保存有效值之前或之后是可访问的(可见的)。在这些时间期间,优选地保持选择的已知值,以便可以测试值(标记值)和/或以定义的方式可靠地捕获其误用(例如,空指针与坏指针)。

将变量设置为标准无效值也可以作为操作刚刚使前一个值无效的注释,这可能在读取即时代码时不明显。