11

ビットマップで何らかの作業を行うネイティブ メソッドがあります。jintArrayメソッド内で、作成したパラメーターにデータを書き込むメソッド呼び出しを介して画像データを取得しNewIntArrayます。

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

この配列を呼び出し元の Java コードに返す必要はありません。これは、このメソッド内での処理のためだけです。ReleaseIntArrayElements電話する必要がありpixelsますか?elemsその場合、Java 配列にコピーして戻す必要がないので、パラメーターに何を渡せばよいでしょうか?

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

4

2 に答える 2

14

何もする必要はありません。これはローカル参照であり、JNI メソッドが終了するとクリーンアップされます。エドワード・トンプソンが上で示唆しているように、ReleaseIntArrayElements()は逆で、GetIntArrayElements().他に機能はありません。

于 2012-05-11T23:53:57.477 に答える
1

参照のみをリリースする必要があります:

jintArray pixels = env->NewIntArray(width * height);
...
env->DeleteLocalRef(pixels)
于 2016-09-08T09:02:19.940 に答える