Разница между jbyteArray и jbyte указателем

0

Я новичок в JNI. Я запутался с jbyteArray и указателем jbyte. Может ли кто-нибудь сказать мне, в чем разница между jbyteArray и jbyte pointer? Благодарю.

  • 0
    К вашему сведению, если такой инструмент, как JavaCPP, отвечает вашим потребностям, он может избавить вас от многих проблем :)
Теги:
jni

1 ответ

1
Лучший ответ

jbyteArray - это дескриптор объекта Java типа byte[]. Указатель jbyte, или, другими словами, jbyte*, является родным типом данных C, который может принимать, например, адрес встроенного массива signed char[], но он не сопоставляется ни с каким типом данных Java.

Объект, на который ссылается jbyteArray является объектом Java, поэтому, как и любой другой объект Java, мы не можем его освободить вручную. Вероятно, в конечном итоге он будет освобожден сборщиком мусора, хотя он станет недоступен. Например, в JNI глобальные ссылки могут быть выделены и освобождены с помощью NewGlobalRef() и DeleteGlobalRef(), поэтому обязательно вызовите последнее, если вы DeleteGlobalRef().

  • 0
    Благодарю. Но у меня есть другой вопрос. Если я использую jbyteArray, как я могу освободить jbyteArray. Я нашел ReleaseByteArrayElements, но он освобождает только указатель jbyte, а не jByteArray в соответствии с документом из [здесь] docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/… . Вы знаете, как на самом деле выпустить jbyteArray?
  • 1
    @tonylin Хорошо, я обновил свой ответ, теперь, пожалуйста, обновите свой вопрос! Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню