Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1163 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Win32] new / delete & DLL [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Win32] new / delete & DLL [résolu]

n°1192023
xtremdev
Je choisi la formule offensive
Posté le 05-09-2005 à 09:11:47  profilanswer
 

Bonjour,
 
je suis en train de développer un exe qui charge des plugins lors de son initialisation.
 
Chaque plugin est une DLL avec une fonction Run() qui me retourne un pointeur sur le résultat.

Code :
  1. Result * Run()
  2. {
  3.     Result * pResult = new Result;
  4.     //processing...
  5.     return pResult;
  6. }


à chaque éxécution de la fonction Run d'un plugin depuis l'exe, le Result * est enregistré dans une liste
Lorsque l'application se termine j'effectue un delete sur chaque Result *
 
Le problème viens du fait que l'instance de l'objet Result est créée sous la DLL et que le delete est appelé sous l'exe.
 
Avez-vous une idée ?


Message édité par xtremdev le 05-09-2005 à 09:50:39
mood
Publicité
Posté le 05-09-2005 à 09:11:47  profilanswer
 

n°1192029
blackgodde​ss
vive le troll !
Posté le 05-09-2005 à 09:33:05  profilanswer
 

fonctionner avec des "interfaces" : un plugin est une classe de type
 

Code :
  1. struct plugin
  2. {
  3.   virtual void do_something() = 0;
  4.   // ...
  5.   virtual void release() = 0;
  6.   virtual ~plugin() {}
  7. };


 
puis une implémentation :
 

Code :
  1. struct mon_plugin
  2. {
  3.   void do_something()
  4.   {
  5.     // ...
  6.   }
  7.   void release()
  8.   {
  9.     delete this;
  10.   }
  11.   virtual ~mon_plugin() {}
  12. };


 
puis apres tu encapsule l'utilisation de tes plugins pour etre sur que le pointeur ne soit pas utilisé apres un appel a release


Message édité par blackgoddess le 05-09-2005 à 09:33:46

---------------
-( BlackGoddess )-
n°1192035
xtremdev
Je choisi la formule offensive
Posté le 05-09-2005 à 09:48:52  profilanswer
 

J'ai trouvé le problème.....
 
En fait on peut très bien :
- Appeler un new depuis une DLL,
- récupérer le pointeur dans l'EXE
- puis effectuer un delete.
 
Il faut juste appeler le delete avant de libérer la DLL (ReleaseLibrary) !


Message édité par xtremdev le 05-09-2005 à 09:50:13
n°1192043
blackgodde​ss
vive le troll !
Posté le 05-09-2005 à 10:10:37  profilanswer
 

FreeLibrary non ?


---------------
-( BlackGoddess )-
n°1192057
xtremdev
Je choisi la formule offensive
Posté le 05-09-2005 à 10:38:13  profilanswer
 

oui pardon !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Win32] new / delete & DLL [résolu]

 

Sujets relatifs
sens de [...] ? [résolu][Résolu] Pb affichage lors de la mise en ligne
[RESOLU] Date: mois-année, bien la galere... (excel)Socket: Mesure d'upload et dowload [RESOLU]
problème de session avec Easyphp [RESOLU][ RESOLU ] Des bordures transparentes ?
(résolu)probleme dans mes codes css et xhtml[Resolu]creer plusieurs graph a partir du meme tableau excel?
C & API Win32: région invalide à réafficher..[Résolu] Comment réduire les interlignes en css ?
Plus de sujets relatifs à : [Win32] new / delete & DLL [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR