Bonjour,
Je sais j'ai un post qui est un peu beaucoup pareil, mais il est pas tres clair alors je me dis que c'est peut etre pour ca que les gens repondent pas.
Mon probleme est le suivant :
J'essaie de creer un objet C++ dans une fonction native JNI, executer cet objet a l'aide de la fonction run, et renvoyer une valeur. La facon dont je l'utilise marche genre 10 fois, ou 20 fois , ou 30 fois d'affiler, ca depend, et apres je me tappe une erreur de segementation. Il semblerait que de la memoire est alloue mais pas libere :
Citation :
//Voici mon code :
#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(JNIEnv *, jclass, jint pied) {
MadCity MC;
MC.run_MadCity(pied);
return(MC.cartotal);
}
|
J'ai vu que par exemple pour creer un objet simple "String", il fallait faire comme ca :
str = (*env)->NewStringUTF("hello" );
Et pour liberer la memoire de la reference locale JNI il fallait faire ca :
(*env)->DeleteLocalRef(env, str);
Ma question principale est : est-ce que la facon dont je cree et utilise mon objet est choquante????, comment feriez vous a ma place????
Ensuite :
Dois-je utiliser (*env) pour gerer mon objet dans la fonction native, si oui comment????
Comme je n'utilise pas (*env) ,est-ce qu'une reference locale a l'objet est cree quand meme??? si oui comment dois-je la detruire?????
Merci...merci
---------------
La meilleure facon d'en apprendre toujours plus, c'est de ne pas retenir ce qu'on nous dit.