jni copy char* 数组数据到JByteArray中 不新建jbyteArray
时间: 2024-03-17 18:40:15 浏览: 122
可以使用`GetByteArrayElements`函数获取`jbyteArray`的底层指针,然后将`char*`数组数据复制到该指针指向的内存区域中。示例代码如下:
```c++
JNIEXPORT void JNICALL Java_com_example_MyClass_copyData(JNIEnv *env, jobject obj, jbyteArray byteArray, jcharArray charArray, jint len) {
jbyte* pBytes = env->GetByteArrayElements(byteArray, NULL);
jchar* pChars = env->GetCharArrayElements(charArray, NULL);
// 将char*数组数据复制到jbyteArray中
memcpy(pBytes, pChars, len);
// 释放底层指针
env->ReleaseByteArrayElements(byteArray, pBytes, 0);
env->ReleaseCharArrayElements(charArray, pChars, 0);
}
```
需要注意的是,在使用`GetByteArrayElements`获取`jbyteArray`底层指针后,需要在操作完成后使用`ReleaseByteArrayElements`函数释放底层指针,以避免内存泄漏问题。同样的,也需要使用`GetCharArrayElements`和`ReleaseCharArrayElements`函数对`jcharArray`进行操作。
阅读全文