gpt4 book ai didi

java - 允许 native 代码直接访问java堆中的对象吗?

转载 作者:行者123 更新时间:2023-11-30 14:24:13 25 4
gpt4 key购买 nike

我有一个 Java 对象数组,我希望允许 native C 代码直接访问该数组(无复制或访问器函数)。这可能吗?我不介意该解决方案是否特定于 JVM。

最佳答案

当然可以使用JNI。

值得咨询此链接:http://journals.ecs.soton.ac.uk/java/tutorial/native1.1/implementing/array.html简而言之 -

#include <jni.h>
#include "IntArray.h"

JNIEXPORT jint JNICALL
Java_IntArray_sumArray(JNIEnv *env, jobject obj, jintArray arr)
{
jsize len = (*env)->GetArrayLength(env, arr);
int i, sum = 0;
jint *body = (*env)->GetIntArrayElements(env, arr, 0);
for (i=0; i<len; i++)
sum += body[i];
(*env)->ReleaseIntArrayElements(env, arr, body, 0);
return sum;
}

关于java - 允许 native 代码直接访问java堆中的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12112090/

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