2011-08-06 45 views
2

我的问题与this one一致,但没有关于我的具体问题的详细信息。 我不明白一件事,我没有在规范中找到,我很惊讶没有人问它。 考虑运营商:JNI:使java对象成为C++类成员是否安全?

m_str = m_env->NewStringUTF("string"); 

如何为Java对象的引用在C + +中创建算的?可以将这些对象存储在本地(C++)方法调用中,还是一旦С++方法完成执行并将控制权返回给Java,它们将被收集起来?

+0

您的问题与哪一个相符?我没有看到任何链接。 –

+0

对不起,我的坏,修好了! –

回答

2

只要您使用NewGlobalRef将本地引用转换为全局引用,然后将Java对象引用存储为C++类的成员。

将本地参照转换为全局参照后,请致电DeleteLocalRef

最后,作为C++析构函数的一部分,请确保在对成员Java对象的引用上调用DeleteGlobalRef

您的C++类的拷贝构造函数也必须调用NewGlobalRef

参见Local and Global References

+1

非常感谢,我已阅读了一些文档和JNI规范的一部分,但我忽略了这一部分。 –