我正在尝试为Java中不同的排序算法编写基准测试,为此我想要探索JNI的世界。 我正在尝试对包含在一个数组中的一组int数组进行排序。 这是我的Java头文件:
public static native void sort(int[][] c);
我使用javah为其生成了这个C头文件:
JNIEXPORT void JNICALL Java_org_jku_ssw_prsw2_ue6_jni_JNISorter_sort(JNIEnv *env, jclass cls, jobjectArray objArr)
然后我尝试用以下代码来获取数组的长度:
jsize len = (*env)->GetArrayLength(env, objArr);
但是从这里开始我有些卡住了,我可以使用GetObjectArrayElement从这个数组中获取一个jobject元素,但是如何继续获取一个jint数组,最终进行排序呢?
jintArray arr = (jintArray) ...
使用了一个转换。 - Jorn Verneefor
循环结束时添加( *env )->DeleteLocalRef( env, arr );
调用。对于一个大的对象数组,你可能会填满本地引用表。请参见 https://dev59.com/6mAf5IYBdhLWcg3wyVB1。 - Andrew Henle