Да, вы должны. GetIntArrayElements
, возможно, создал копию данных или закрепил массив, чтобы избежать перемещения данных сборщиком мусора. Это не будет отменено, пока вы не позвоните ReleaseIntArrayElements
.
Кроме того, GetIntArrayElements(javaArray, JNI_FALSE)
неверно, если вы думали, что он не будет создавать копию.
Второй аргумент GetIntArrayElements
- это jboolean*
, а не jboolean
. Это выходной параметр, который после возврата функции будет указывать на значение, указывающее, была ли сделана копия.
В вашем случае JNI_FALSE
так же имеет то же значение, что и NULL
, так что вы, по сути, делаете GetIntArrayElements(javaArray, NULL)
- то есть "Мне не интересно знать, была ли копия сделал ".