2012-05-11 7 views
10

Tengo un método nativo que hace algo de trabajo en un mapa de bits. Dentro del método agarro los datos de imagen a través de una llamada al método que escribe los datos en un parámetro jintArray que he creado con NewIntArray:¿Debo llamar a ReleaseIntArrayElements en una matriz creada con NewIntArray?

jintArray pixels = env->NewIntArray(width * height);

no necesito volver esta matriz de nuevo a la llamada Código de Java: solo se procesa en este método. ¿Debo llamar al ReleaseIntArrayElements en pixels? Si es así, ¿qué paso para el parámetro elems, ya que no necesito copiarlo de nuevo a una matriz Java?

void (JNICALL *ReleaseIntArrayElements) (JNIEnv *env, jintArray array, jint *elems, jint mode);

+2

¿Ha llamado 'GetIntArrayElements'? –

+0

No, no lo hice. –

Respuesta

11

Usted no tiene que hacer nada con ella. Es una referencia local y se limpiará cuando finalice su método JNI. Como Edward Thompson insinúa arriba, ReleaseIntArrayElements() es el inverso de GetIntArrayElements(). No tiene otra función.

+0

¡Gracias por la aclaración! –

+1

¿Dónde puedo leer la documentación al respecto? – aProgrammer

+0

@anDroider Err, en la especificación JNI? – EJP

0

Usted tiene que liberar única referencia:

jintArray pixels = env->NewIntArray(width * height); 
... 
env->DeleteLocalRef(pixels) 
Cuestiones relacionadas