안녕하세요 개발자님들.
안펍에서 공부 많이 하고 가는 사회 초년생입니다.
다름이 아니라 JNI쪽은 거의 생소해서 문제가 참 많이 생기는데 오늘도 어김없이 문제가 생기네요 ㅠㅠ...
어플에서 JNI를 호출하면 잘 돌아가는데 유독 한 부분에서 자꾸만 어플이 종료가 됩니다.
이게 오류 메시지라도 뿌리면서 죽으면 추적이나 하겠는데 오류조차 안뿌리고 죽어뿌네요.
그래서 삽질하고 해서 겨우겨우 찾았더니
JNIEXPORT.....()
{
unsigned char *result; //
result = (char *)malloc(19200); //
jint leng = (*g_env)->GetArrayLength(g_env, jdata);
(*g_env)->GetByteArrayRegion(g_env, jdata, 0, leng, (jbyte *)result);
result[leng] = 0;
free(result);
}
요부분이더라고요.
byte[] 를 네이티브 c 의 char * 형으로 바꾸는건데 이 부분을 주석제거하면 어플이 잘 돌아가고 이 부분이 껴있으면 계속해서 죽어버리구요.
이 함수는 꼭 필요한거라 쓰기는 해야 하는데 자꾸 문제가 생기니 난감합니다.
쓰레드로 돌리기 때문에 속도가 빠른가 해서 jni단에 슬립을 줘봣는데도 죽는건 매한가지입니다.
뭐가 문제일까요...
malloc 문제일까 이걸 전역변수로 만든다음 다른 함수에 넣었는데도 똑같네용...