我的问题与 this one 重合,但我的具体问题没有详细说明。 我无法理解一件事,我没有在规范中找到,我很惊讶没有人问它。 考虑一下运营商:
m_str = m_env->NewStringUTF("string");
如何计算从C ++创建的Java对象的引用?可以将这些对象存储在本机(C ++)方法调用中,也可以在С++方法完成执行并将控制权返回给Java后收集它们?
答案 0 :(得分:2)
只要在将Java对象引用存储为C ++类的成员之前,使用NewGlobalRef
将本地引用转换为全局引用即可。
将本地参考转换为全局参考后,请致电DeleteLocalRef
。
最后,作为C ++析构函数的一部分,请确保在对成员Java对象的引用上调用DeleteGlobalRef
。
您的C ++类的复制构造函数也必须调用NewGlobalRef
。