小编Ali*_*Ali的帖子

JNI 中的 ReleaseStringUTFChars 导致崩溃(SIGSEGV)

我在 android studio 中的 JNI 中使用此代码。一些用例在运行时导致崩溃和其他工作。也许它与内存泄漏有关。我收到此错误:
SIGSEGV(信号 SIGSEGV:无效地址(故障地址:0xffffffffdeadbaad))

jstring jstr1 = (*env)->NewStringUTF(env, ""); char *m1 = (char *)(*env)->GetStringUTFChars(env,jstr1, 0);

jstring jstr2 = (*env)->NewStringUTF(env, "-");
char *m2 = (char *)(*env)->GetStringUTFChars(env,jstr2, 0);

jstring jstr3 = (*env)->NewStringUTF(env, "");
char *aaa = (char *)(*env)->GetStringUTFChars(env,jstr3, 0);

// ...

strcat(aaa,m1);
(*env)->ReleaseStringUTFChars(env, jstr1, m1);//no problem

strcat(bbb,m2);
(*env)->ReleaseStringUTFChars(env, jstr2, m2);//no problem

strcat(str,aaa);
//(*env)->ReleaseStringUTFChars(env, jstr3, aaa);//crash

strcat(str,bbb);
(*env)->ReleaseStringUTFChars(env, jstr4, bbb);//no problem

strcat(str,m3);
(*env)->ReleaseStringUTFChars(env, jstr5, m3);//no problem

strcat(str,ccc);
jstring res = (*env)->NewStringUTF(env, str);
//(*env)->ReleaseStringUTFChars(env, jstr6, str);//crash
Run Code Online (Sandbox Code Playgroud)

java java-native-interface android

1
推荐指数
1
解决办法
476
查看次数

标签 统计

android ×1

java ×1

java-native-interface ×1