ReleaseStringUTFChars
-
Hallo zusammen,
ich nutze folgendes Beispiel (JavaNativeInterface)// String 1 from Java jfieldID javaFieldID = env->GetFieldID(dataCls, "string1", "Ljava/lang/String;"); jstring strObj = (jstring) env->GetObjectField(data, javaFieldID); const char* cStr1 = env->GetStringUTFChars(strObj, NULL); // String 2 from Java javaFieldID = env->GetFieldID(dataCls, "string2", "Ljava/lang/String;"); strObj = (jstring) env->GetObjectField(data, javaFieldID); const char* cStr2= env->GetStringUTFChars(strObj, NULL); ...
Ich benutze die jfieldID und das jstring Objekt also mehrfach... meine Frage ist muss ich am Ende nur einmal
env->ReleaseStringUTFChars(strObj, stringLast)
aufrufen
oder
für jede char* Variable einzeln
env->ReleaseStringUTFChars(strObj, string1);
env->ReleaseStringUTFChars(strObj, string2);...
(oder auch als 3 Variante nach jedem Aufruf ??? )Was wird denn genau released ? der Speicherplatz des Char* , der jstring oder die Bindung also die Adresse?
Danke schonmal im Voraus.
-
Du mußt für jeden
env->GetStringUTFChars(strObj, NULL)
- AufrufReleaseStringUTFChars
aufrufen, sobald du nicht mehr auf den zurückgegebenen String zugreifen möchtest, s.a. Doku JNI Functions (such dann nach "ReleaseStringUTFChars").