vvoisin
Messages postés7Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention 3 novembre 2004
-
2 sept. 2004 à 18:36
cs_tibur
Messages postés101Date d'inscriptionsamedi 9 février 2002StatutMembreDernière intervention 5 mai 2009
-
6 sept. 2004 à 10:46
Bonjour,
mon probleme est le suivant.
J'ai dans une DLL (ENGINE) une class (REPORT) exportée.
Un application intégre cette dll. Un fonction de cette application appelle cette DLL en lui passant un tableau d'objets en paremetre du type de la class exportée dans la dll (REPORT*).
Le problème est je suivant.
J'inclue le .h de cet objet exporté dans le projet, tout fonctionne bien.
si j'effectue l'operation suivente :
REPORT* monReport = new REPORT();
delete monReport;
L'application plante.
Si j'effectue l'operation suivante :
REPORT* monReport = new REPORT[15];
delete[] monReport;
L'applicaion plante.
pour :
REPORT* monReport = new REPORT();
delete (void*)monReport;
L'application ne plante pas et la memoire est bien libérée.
vvoisin
Messages postés7Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention 3 novembre 2004 6 sept. 2004 à 10:35
OK, en fait je fais j'ai mis une autre methode en place.
Mon programme appelle une foncfion dans la dll en lui passant en parametre la taille du tableau. Le tableau est créé dans la dll et un pointeur est renvoyé au programme.
De meme, un fonction delete appelée par le programme dans la dll libere mon objet.
Ca marche, je ne trouve pas cela trop propre mais bon. c dans le meme principe que JNI ;)
cs_tibur
Messages postés101Date d'inscriptionsamedi 9 février 2002StatutMembreDernière intervention 5 mai 2009 5 sept. 2004 à 09:03
Ton new et ton delete, tu les fait dans tous les deux à l'exterieur de la dll ?
J'ai eu des problemes dans un projet ya quelques temps, et j'en ai conclu qu'il faut allouer / liberer la memoire dans le meme module (soit dans la dll, soit dans le code qui importe les symboles ).
vvoisin
Messages postés7Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention 3 novembre 2004 6 sept. 2004 à 09:58
Bonjour,
La déclaration ( Cpp et .h ) appartiennent a la dll.
Mon new et mon delete eux, sont fait dans le programe qui importe la dll. Ce afin de pouvoir passer un objet (un tableau de class) du programme vers la dll.
Dans ton projet, en definitif, tu as fait comment ?
Dans mon cas, je dois passer beaucoup d'inrormation.
cs_tibur
Messages postés101Date d'inscriptionsamedi 9 février 2002StatutMembreDernière intervention 5 mai 2009 6 sept. 2004 à 10:46
> Merci a toi.
Eh de rien ...
J'ai du utiliser le meme genre de fonctions : genre je demende à la dll la taille de l'image à creer, je la cree dans le main, je l'utilise dans la dll et puis finalement, le prog principal la detruit.
C'est un peu retord, tout de meme, mais bon, ca marche.