MegaDrone: fix memory leak in JNI

Call ReleaseIntArrayElements()
and simplify vector initialization.
Fixes #713
diff --git a/samples/MegaDrone/src/main/cpp/native-lib.cpp b/samples/MegaDrone/src/main/cpp/native-lib.cpp
index b29861f..2ef6ef9 100644
--- a/samples/MegaDrone/src/main/cpp/native-lib.cpp
+++ b/samples/MegaDrone/src/main/cpp/native-lib.cpp
@@ -21,20 +21,18 @@
 #include "MegaDroneEngine.h"
 
 
-std::vector<int> convertJavaArrayToVector(JNIEnv *env, jintArray intArray){
-
+std::vector<int> convertJavaArrayToVector(JNIEnv *env, jintArray intArray) {
     std::vector<int> v;
     jsize length = env->GetArrayLength(intArray);
-
     if (length > 0) {
-        jboolean isCopy;
-        jint *elements = env->GetIntArrayElements(intArray, &isCopy);
-        for (int i = 0; i < length; i++) {
-            v.push_back(elements[i]);
-        }
+        jint *elements = env->GetIntArrayElements(intArray, nullptr);
+        v.insert(v.end(), &elements[0], &elements[length]);
+        // Unpin the memory for the array, or free the copy.
+        env->ReleaseIntArrayElements(intArray, elements, 0);
     }
     return v;
 }
+
 extern "C" {
 /**
  * Start the audio engine
@@ -87,4 +85,4 @@
     oboe::DefaultStreamValues::FramesPerBurst = (int32_t) framesPerBurst;
 }
 
-} // extern "C"
\ No newline at end of file
+} // extern "C"