Creer une instance d'Objet C++ dans JNI

Creer une instance d'Objet C++ dans JNI - Java - Programmation

Marsh Posté le 03-11-2003 à 14:09:45    

Bonjour,
J'aimerai connaitre le moyen "propre" de creer une instance d'objet  C++ dans une fonction JNI.
 
Ce serat peut etre plus clair avec l'exemple (ci-dessous, c'est la facon "pas terrible", que j'utilise pour creer mon objet MadCity (qui est stocke dans "GT3MadCity.h" ), l'utiliser,et renvoyer le resultat de l'execution) :
 
#include <iostream>
#include "uk_ac_wmin_cpc_madcityc_impl_MadCityCImpl.h"
#include "GT3MadCity.h"
 
JNIEXPORT jint JNICALL Java_uk_ac_wmin_cpc_madcityc_impl_MadCityCImpl_MadCityS(J
NIEnv *, jclass, jint pied) {
     
        MadCity MC;
        MC.run_MadCity(pied);
        return(MC.cartotal);
}
 
Cette methode marche, mais apparemment grignotte de la memoire. L'instance creer n'est pas detruite et ca bouffe de la memoire.
 
Donc ma question est : comment faire la meme chose, tout en detruisant l'instance cree...
 


---------------
La meilleure facon d'en apprendre toujours plus, c'est de ne pas retenir ce qu'on nous dit.
Reply

Marsh Posté le 03-11-2003 à 14:09:45   

Reply

Marsh Posté le 03-11-2003 à 14:20:41    

Citation :

#include "uk_ac_wmin_cpc_madcityc_impl_MadCityCImpl.h"  
...
Java_uk_ac_wmin_cpc_madcityc_impl_MadCityCImpl_MadCityS


 
[:daplopbot]
 
rassures moi, t'as l'autocompletion dans ton ide ? :D
 
vu que ton madcity est declaré en local, il est detruit a la fin de la fonction, donc fodrait voir ailleurs

Reply

Marsh Posté le 03-11-2003 à 14:22:51    

scool36 a écrit :


Donc ma question est : comment faire la meme chose, tout en detruisant l'instance cree...


Fais-toi embaucher chez Sun et refais tout JNI [:dark-imperator]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 03-11-2003 à 14:29:09    

Mais est-ce que c'est la bonne facon de creer un objet C++ dans JNI????
 
Quelles sont les autres possibilites??
Merci


---------------
La meilleure facon d'en apprendre toujours plus, c'est de ne pas retenir ce qu'on nous dit.
Reply

Marsh Posté le 03-11-2003 à 18:01:39    

Citation :


chrisbk a ecrit :
vu que ton madcity est declaré en local, il est detruit a la fin de la fonction, donc fodrait voir ailleurs  


 
Ben apparement y a une reference local a l'objet dans JNI qui doit etre supprime, "meme si l'objet est declare en local."
Comme par exemple dans :
str = (*env)->NewStringUTF("hello" );
 


---------------
La meilleure facon d'en apprendre toujours plus, c'est de ne pas retenir ce qu'on nous dit.
Reply

Marsh Posté le 03-11-2003 à 18:05:15    

Suite du message precedent :
Apres avoir fait par exemple  
      str = (*env)->NewStringUTF("hello" );  
il apparait qu'il faut faire ca
      (*env)->DeleteLocalRef(env, str);
 
Mais comme moi je cree mon objet "bizarrement" sans utiliser "env", je vois pas comment je peux detruire la reference local a l'objet.
 
Desole pour le message en deux partis.


---------------
La meilleure facon d'en apprendre toujours plus, c'est de ne pas retenir ce qu'on nous dit.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed