Android JNI に Java 配列を割り当てる関数を書きました。ただし、Java からこの関数を連続して呼び出すと、エラー[*Fatal signal 11 (SIGSEGV)]が発生します。
C++
static jbyteArray buffer = NULL;
static int cbuflen = 0;
jbyteArray Java_com_sample_buffer_Buffer_updateBuffer(JNIEnv* env, jobject thiz, jlong handle, jint buflen)
{
if(buflen > cbuflen){
if(buffer != NULL) env->DeleteLocalRef(buffer);
buffer = env->NewByteArray(buflen);
cbuflen = buflen;
}
return buffer;
}
ジャワ
byte[] buf = conv.updateBuffer(buflen);
このように使うべきではありませんか?それとも何か対策はありますか?