|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 807 ![]() |
Bonjour,
Dans le code natif de JNI, dans certains cas on "lève des exceptions". Mais comment fait-on si l'on désire un message d'erreur "dynamique" (pour y inclure des variables) ? En particulier, quand appeler le "free()" sur le char* ? Si je fais ça : Code :
Est-ce que ThrowNew fait une copie de "msg" ? Je pense que c'est le cas, sinon c'est problématique. Cela veut-il dire qu'à chaque fois qu'on passe un char * (par exemple) à une fonction qui doit en garder une référence, elle doit toujours faire une copie du contenu ? |
||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() ![]() |
il me semblerait logique dans ce cas ci qu'il y aie copie. L'exception va devoir être créée, le message d'une exception c'est un java.lang.String, ce qui n'a rien à voir avec un char* puisque un java.lang.String utilise un tableau java.
Maintenant, selon moi, le meilleur moyen d'être fixé, c'est de faire un test simple Code :
http://stackoverflow.com/questions/2...ns-in-jni-code
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
||
|
|
10
|
|
|
#3 |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 807 ![]() |
Je viens de tester, je confirme il en fait bien une copie.
Par contre, du coup, en C c'est dommage, on est obligé à chaque fois de faire des copies des paramètres pointés, pour les mettre "en lieu sûr", même si le paramètre était déjà "en lieu sûr", mais on ne peut pas le savoir. |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() |
pour les paramètres "en lieu sur", il n'y a que la jstring
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 807 ![]() |
Je parlais en général en C, pas forcément en lien avec JNI.
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com