2011-08-06 44 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規範的一部分,但我忽略了這一部分。 –