2012-11-30 73 views
0

如何將C++的short *從java轉換爲jshortArray?從C++到java數組的轉換

我正在尋找一些在線文檔,但並不容易找到。

+0

你試圖通過JNI來實現這個,對嗎? – Vulcan

+2

[鏈接] [1]這與你想要的相反,但它可能會幫助你。 [1]:http://stackoverflow.com/questions/5586155/jni-how-to-convert-jshortarray-to-short –

+0

@Vulcan是的!我在寫一個jni cpp代碼! – Victor

回答

2
jshortArray convertShortArrayToJNI(JNIEnv* env, short* arr, size_t count) { 
    jshortArray retval = env->NewShortArray(count); 
    env->SetShortArrayRegion(retval,0,count,arr); 
    return retval; 
} 

你並不需要釋放retval。這是一個「本地引用」,這意味着只要您從最近的調用中通過JNI返回,它就會被JVM釋放。除非你從本地線程調用它,當然...

+0

我需要釋放arr嗎? – Victor

+1

'arr'完全針對你的實現,它的內存管理取決於你。我不知道,JVM也不知道,它是否是一個指向RAII構造的指針(並且它會自動釋放),或者您手動創建它,並且需要記住將其釋放。 –

+0

我用你的代碼,顯示如下錯誤:'ReferenceTable overflow(max = 512)'。我用'jenv-> ReleaseShortArrayElements(retval,arr,0);'釋放了創建的數組(它不會返回,只用於回調函數中)。有什麼問題嗎? – Victor