JNI GetByteArrayElements странное поведение

#android #java-native-interface

#Android #java-native-интерфейс

Вопрос:

Внутри JNI-части моего приложения для Android я использую следующий код

 output_buffer = jni_env->NewByteArray(sizeof(short) * samples.size());  
jboolean *isCopy;
output_buffer_native = jni_env->GetByteArrayElements(output_buffer, isCopy);
  

На некоторых телефонах это работает нормально, но на некоторых других телефонах происходит сбой при вызове GetByteArrayElements . После того, как я изменю эту строку на

 jni_env->GetByteArrayElements(output_buffer, nullptr);
  

сбой исчезает. В чем здесь может быть проблема?

Комментарии:

1. Вам нужно jboolean isCopy; в объявлении и amp;isCopy в списке аргументов.

2. В настоящее время вы передаете неинициализированное jboolean* в GetByteArrayElements , поэтому вы получаете неопределенное поведение. Смотрите комментарий @user207421 о том, что вы должны сделать, чтобы исправить это.