修改指针的JNI方法

时间:2010-06-20 22:01:26

标签: java java-native-interface

有一个特殊的问题。当我调用以下JNI方法时。

jobjectArray array = env->NewObjectArray(list->size, jclass, 0);

现在,list->size设置为54.但是,只要上面的代码运行,同一指针就会返回,2405015736是什么时候进行的?因为影响结构的其余部分中的值也。设置静态值,即

jobjectArray array = env->NewObjectArray(54, jclass, 0)

也没有效果。有任何想法吗?我很难过。

(jclass是一个加载的类对象jclass = env->FindClass("name");

由于

1 个答案:

答案 0 :(得分:0)

您的问题是尺寸可能不是'jsize'类型,因此必须进行转换。现在,这将是一切都很好,但JNI对这些东西是一种绝对的痛苦。我认为正在发生的事情是你的堆栈被一个被解释为太大的数字破坏了。或类似的东西。只需像这样进行大小转换:

jint msize = list->size;
jobjectArray array = env->NewObjectArray(msize, jclass, 0);

这应该可以解决问题。