0
我有两个数组:如何检查两个JNI数组指向同一个内存位置?
auto inputArray = reinterpret_cast<jbyteArray>(mainEnv->NewGlobalRef(imageDataArray));
auto output = reinterpret_cast<jfloatArray>(mainEnv->NewGlobalRef(data));
当我尝试:
auto input = env->GetByteArrayElements(inputArray, nullptr);
我得到这个错误:
“JNI检测到的错误应用:尝试获取字节基本数组元素用浮子式[]的目的”
我的猜测是‘inputArray’(字节阵列)指向的相同的存储器位置‘输出’(float数组)。
我该如何检查?
铸造'jobject'使得它不会改变基本的Java对象的类型没有什么意义。如果您确实需要以非实际类型的方式访问数据,则应在获取本机指针后执行转换。 – Michael
这些是Java中的真实类型。我正在施放他们,因为我想在本地环境中与他们一起工作。所以“inputArray”是两个环境中的一个字节数组。我已经检查过很多次了,所以我不能再数了。 :( –
好吧,我建议你写一个完整的最小代码示例,可以用来重现这个问题。如果这个例子没有最终出现同样的问题,那么你需要确定它与真实的不同之处码。 – Michael