gpt4 book ai didi

android - getArrayLength() 正在返回一个巨大的数字......

转载 作者:搜寻专家 更新时间:2023-11-01 08:13:51 27 4
gpt4 key购买 nike

我试图理解 jni,所以我开始破解 hellojni,然后遇到了这个问题。

我的 java 代码如下所示:

                    short[] buf = new short[16];
Log.d("hello", "before!");
write(buf, 0, 16);

我的 C 代码如下所示:

jint
Java_com_example_hellojni_HelloJni_write(JNIEnv* env, jshortArray buf, jint off, jint len)
{
char debug[1024];
int ii = 0;
jsize cbuflen = (*env)->GetArrayLength(env, buf);

sprintf(debug, "array length: %d", cbuflen);
LOGD(debug);
...
...

输出是:

数组长度:1079082088

为什么数组长度这么大?

最佳答案

你能展示你的整个 JNI 文件吗?您没有在 JNI 函数中声明目标对象。通常参数是 JNIEnv* env、jobject javaObject 等。这意味着您认为 jshortArray 实际上是指向 Java 对象的指针,这可以解释您得到的奇怪结果。

关于android - getArrayLength() 正在返回一个巨大的数字......,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6880021/

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