问题描述
我用JNI开发了一个Cpp库。 CPP库具有一些函数,我可以通过这些函数将java中的字符串数组和数字数组传递给它们。不幸的是,当我运行整个程序时,进程的内存使用量正在增加,并最终被杀死。我使用以下函数将字符串Array,nums Array从Java转换为C格式。我还将函数中的字符串返回给Java。
我想知道以下功能中是否存在内存泄漏
myVector<string> getCStringFromJavaString(jobjectArray msgWordsStrArray,JNIEnv *env){
int stringCount = env->GetArrayLength(msgWordsStrArray);
myVector<string> msgWordsArray;
for (int i=0; i<stringCount; i++) {
jstring orig = (jstring) (env->GetObjectArrayElement(msgWordsStrArray,i));
const char *rawString = env->GetStringUTFChars(orig,0);
msgWordsArray.push_back(rawString);
env->ReleaseStringUTFChars(orig,rawString);
}
return msgWordsArray;
}
myVector<myDouble> getMyDoubleFromJavaDouble(jdoubleArray numsArray,JNIEnv *env){
int numsCount = env->GetArrayLength(numsArray);
myVector<myDouble> N;
double *numsArrayCStyle = env->GetDoubleArrayElements(numsArray,0);
for(int i = 0;i < numsCount; i++ ){
double orig = numsArrayCStyle[i];
myDouble origMyDouble(orig);
N.push_back(origMyDouble);
}
env->ReleaseDoubleArrayElements(numsArray,numsArrayCStyle,JNI_ABORT);
return N;
}
jstring getJStringFromCString(string cstring,JNIEnv *env){
return env->NewStringUTF(cstring.c_str());
}
PS:myDouble,myVector是模仿向量的类,在cpp中为double。它们中没有内存泄漏
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)