2013-07-25 20 views
0

全局引用我不知道这意味着什么:删除的JNI

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

什么让我困惑的是,我们删除全局引用,然后我们将其设置为0。 不会删除它就够了吗?为什么赋值为0部分?

由于

回答

2

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

在许多情况下,变量在保存有效值之前或之后都可访问(可见)。在那段时间内,它最好保存一个已知的值,以便能够以一种确定的方式(例如,空指针vs坏指针)可靠地捕获值(一个标记值)和/或其误用。

将变量设置为标准无效值也可用作操作刚刚使先前值无效的注释,从读取立即代码可能不明显。

+0

它像你说的我猜想的那样扮演着更多的评论角色,因为我发现类似的代码可以做同样的事情,但最终没有设置为0。以前的同事我猜不管出于什么原因... – user2381422