env-> jni中的ReleaseDoubleArrayElements()

时间:2012-12-10 09:04:02

标签: java-native-interface

我在发布的doublearrayelements中遇到了问题,它在这个功能中崩溃所以你能不能帮我解决这个问题 这是我的代码:

jdouble *dxyz = new jdouble[3];
    dxyz[0] = 0.0;
    dxyz[1] = 0.0;
    dxyz[2] = 0.0;
    jdoubleArray darr = env->NewDoubleArray(3);
    env->SetDoubleArrayRegion(darr,0,3,dxyz); 

    jclass dclass = env->GetObjectClass( darr );
    jobjectArray iarr = env->NewObjectArray(nbControlNodes,dclass,darr);
    env->ReleaseDoubleArrayElements(darr,dxyz,JNI_ABORT);//its crashing here

1 个答案:

答案 0 :(得分:0)

ReleaseDoubleArrayElements用于通过dxyz获得的原始数组(您的GetDoubleArrayElements)。这样,JNI为您创建了一个C数组,它需要知道何时解除分配。崩溃最有可能发生,因为Release正试图将您的dxyzfree()解除分配。您已使用dxyz创建了operator new,并且您应该使用delete将其释放。