将字符串列表从Java传递到C
我需要通过JNI将字符串列表从Java传递到C。 我的Java程序传递一个列表参数,C程序接受一个列表
下面是我尝试的代码
JNIEXPORT jobject JNICALL Java_jni_CallJNIfunction(JNIEnv *env,
jobjectArray jParameters){
list<const char*> cParameters;
jsize stringCount = env->GetArrayLength(jParameters);
for (int i=0; i<stringCount; i++) {
jstring arrElement = (jstring) (env->GetObjectArrayElement(jParameters, i));
const char* nativeElement = env->GetStringUTFChars( arrElement, NULL);
cParameters.push_back(nativeElement);
env->ReleaseStringUTFChars(arrElement, nativeElement);
}
CallCfunction(cParameters);
}
但我的JVM在GetStringUTFChars()行崩溃。 这个程序有什么问题
# 1 楼答案
简单C函数的第一个答案是:
# 2 楼答案
你会:
您将存储的字符串释放到列表中,因此列表中包含大量错误指针
您必须将字符串复制到一个长时间分配的空间中,您可以选择std::string、char*+malloc,或者使用它并忘记它的方法
第三种解决方案的解释: