gpt4 book ai didi

java - JNI异常: jarray is an invalid global reference

转载 作者:行者123 更新时间:2023-11-30 16:58:32 24 4
gpt4 key购买 nike

通过 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 传入的是整数而不是长整型,长整型是较小的变量,将一些指针向后移动。所以,它基本上破坏了作业对象。

关于java - JNI异常: jarray is an invalid global reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38735032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com