Я новичок в JNI. Я запутался с jbyteArray и указателем jbyte. Может ли кто-нибудь сказать мне, в чем разница между jbyteArray и jbyte pointer? Благодарю.
jbyteArray
- это дескриптор объекта Java типа byte[]
. Указатель jbyte
, или, другими словами, jbyte*
, является родным типом данных C, который может принимать, например, адрес встроенного массива signed char[]
, но он не сопоставляется ни с каким типом данных Java.
Объект, на который ссылается jbyteArray
является объектом Java, поэтому, как и любой другой объект Java, мы не можем его освободить вручную. Вероятно, в конечном итоге он будет освобожден сборщиком мусора, хотя он станет недоступен. Например, в JNI глобальные ссылки могут быть выделены и освобождены с помощью NewGlobalRef()
и DeleteGlobalRef()
, поэтому обязательно вызовите последнее, если вы DeleteGlobalRef()
.