簡體   English   中英

JNI異常:jarray是無效的全局引用

[英]JNI Exception: jarray is an invalid global reference

通過CheckJNI從JNI獲取以下異常。

JNI DETECTED ERROR IN APPLICATION: jarray is an invalid global reference: 0x8f635e1e (0xdead4321)

發生在:

uint32_t* ConvertIntArray(JNIEnv *env, jclass cls, jintArray intArray)
{
   return (*env)->GetIntArrayElements(env, intArray, NULL);
}

稱為:

uint32_t* indexes = ConvertIntArray(env, cls, planeLengths);

在:

jlong Java_<censored>(JNIEnv *env, jclass cls, jlong state, jintArray planeLengths)

一切都發生在上述函數中,因此不會進行全局引用。 planeLengths直接傳遞到ConvertIntArray中,該函數應返回其uint32指針。 Google也沒有針對JNI錯誤的結果。

注意:以上幾行是在完成所有C預處理之后的。 有幾個宏可以替換為不同的代碼,這就是為什么ConvertIntArray函數似乎毫無意義的原因。

我的大學和我自己陷入了困境。 有什么想法嗎?

因此,事實證明這是內存損壞。 在問題中,我截斷了幾個長參數以使問題更短。 事實證明,Java傳遞的是int而不是longs,后者是較小的變量,將一些指針移回了。 因此,它基本上破壞了工作對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM