我想学习下 android的java层和C语言层数组传递机制,就用了
GetByteArrayRegion和SetByteArrayRegion两个 函数,
现在的问题是  用SetByteArrayRegion 从 C==》》》java是没有问题的。
但是 从java==>>> C的话,用GetByteArrayRegion就出错。请大家帮我分析下为什么,下面是我的代码:
jbyteArray Java_com_example_test_Getdata(JNIEnv *env, jobject thiz)
{
.................///一些其他获取数据的代码
     byteArray = (*env)->NewByteArray(env, size);
         if (byteArray == NULL)
         {
            return NULL;  
         }
        (*env)->SetByteArrayRegion(env, byteArray, 0, size,(jbyte *)data);
    return byteArray;
}void Java_com_example_test_Setdata(JNIEnv *env, jobject thiz,jbyteArray jbuffer,jint size)
{ jbyteArray byteArray = NULL;
 
    jbyte data[size];
    (*env)->GetByteArrayRegion(env,jbuffer, 0, size, data);  ///<-----这里出问题,请教下为什么,谢谢!!!
    __android_log_print(ANDROID_LOG_INFO, "test", "test-----%.2x--%.2x--%.2x--%.2x--%.2x--%.2x--%.2x--",
                size,
                data[0],
                data[1],
                data[2],
                data[3],
                data[4],
                data[5],
                data[6]);
    return ;
}