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)- Aufruf ReleaseStringUTFChars aufrufen, sobald du nicht mehr auf den zurückgegebenen String zugreifen möchtest, s.a. Doku JNI Functions (such dann nach "ReleaseStringUTFChars").


Anmelden zum Antworten