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

new / delete & DLL [résolu] [Win32] - C++ - Programmation

Marsh Posté le 05-09-2005 à 09:11:47    

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
Reply

Marsh Posté le 05-09-2005 à 09:11:47   

Reply

Marsh Posté le 05-09-2005 à 09:33:05    

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 )-
Reply

Marsh Posté le 05-09-2005 à 09:48:52    

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
Reply

Marsh Posté le 05-09-2005 à 10:10:37    

FreeLibrary non ?


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 05-09-2005 à 10:38:13    

oui pardon !

Reply

Sujets relatifs:

Leave a Replay

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