簡體   English   中英

從C ++傳遞NewDirectByteBuffer到Java(JNI)

[英]Passing NewDirectByteBuffer from C++ to Java (JNI)

我有這個C ++代碼:

char *buffer = new char[100];

/*
*  ...populate this char array with some data...
*/

jobject jbuffer = env->NewDirectByteBuffer(buffer, 100);

之后,我想將我在C ++中創建的DirectByteBuffer傳遞給Java。

我有兩個問題:

  1. env->NewDirectByteBuffer(buffer, 100)清除char數組緩沖區中的數據嗎? 這是正確的方法嗎?
  2. 何時將刪除此緩沖區? 我應該在以后的某個時候用C ++刪除它,還是Java的GC幫我處理它?
jobject jbuffer = env->NewDirectByteBuffer(buffer, 100);

創建對Java對象的本地引用 當顯式釋放時,或者使用PushLocalFrame()/ PopLocalFrame()時 ,或者在分配了此本地引用的JNI函數返回時,它將被標記為未使用。

之后,GC將決定按照與常規Java對象相同的規則刪除緩沖區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM