Devriez-vous appeler ReleaseStringUTFChars si GetStringUTFChars retourné un exemplaire?
Le livre "l'Essentiel JNI: Java Native Interface" par Rob Gordon contient l'exemple de code suivant pour convertir un jstring à une chaîne C:
const char* utf_string;
jboolean isCopy;
utf_string = env->GetStringUTFChars(str, &isCopy);
/* ... use string ... */
if (isCopy == JNI_TRUE) {
env->ReleaseStringUTFChars(str, utf_string);
}
Noter que seuls les appels ReleaseStringUTFChars
si isCopy
est vrai.
Mais le livre Java Native Interface: Guide du Programmeur et de Spécification (autre lien: http://192.9.162.55/docs/books/jni/html/objtypes.html#5161
) dit:
La ReleaseString-Chars appel est
nécessaire si GetStringChars a
set *isCopy à JNI_TRUE ou JNI_FALSE.
ReleaseStringChars soit libère l'
copie ou unpins l'instance, selon
si GetStringChars a
renvoyé une copie ou pas.
Me tromper en supposant que c'est un bug dans Gordon livre?
- où est
str
defiined?
Vous devez vous connecter pour publier un commentaire.
Oui, votre hypothèse est correcte, vous devriez toujours faire appel à ReleaseStringUTFChars).