begin process at 2010 02 10 16:40:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

[ C++ ][ DLL EXPORT ][ LIBERATION MEMOIRE ][ delete[] ]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[ C++ ][ DLL EXPORT ][ LIBERATION MEMOIRE ][ delete[] ]

jeudi 2 septembre 2004 à 18:36:18 | [ C++ ][ DLL EXPORT ][ LIBERATION MEMOIRE ][ delete[] ]

vvoisin

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.

---------------------------- code de l'objet exporté .h
#ifdef CAPACEMANAGEMENT_EXPORTS
#define CAPACEMANAGEMENT_API __declspec(dllexport)
#else
#define CAPACEMANAGEMENT_API __declspec(dllimport)
#endif

#include <string.h>

class CIReportBalancingGroup
{
public:
CAPACEMANAGEMENT_API CIReportBalancingGroup();
CAPACEMANAGEMENT_API virtual ~CIReportBalancingGroup();

CAPACEMANAGEMENT_API inline REPORTBALANCINGGROUP_BALANCINGGROUPNAME_TYPE_GET GetBalancingGroupName() {return m_balancingGroupName;}

CAPACEMANAGEMENT_API inline SetBalancingGroupName(REPORTBALANCINGGROUP_BALANCINGGROUPNAME_TYPE_SET p_balancingGroupName) {strcpy(m_balancingGroupName,p_balancingGroupName);}
private:
REPORTBALANCINGGROUP_BALANCINGGROUPNAME_TYPE m_balancingGroupName REPORTBALANCINGGROUP_BALANCINGGROUPNAME_SIZE;
};


---------------------------- code de l'objet exporté .cpp
#include "stdafx.h"
#include "CIReportBalancingGroup.h"
// constructeur
CAPACEMANAGEMENT_API CIReportBalancingGroup::CIReportBalancingGroup(){}
// destructeur
CAPACEMANAGEMENT_API CIReportBalancingGroup::~CIReportBalancingGroup(){}


Si quelqu'un trouve une idée car la, je ne vois pas comment faire circuler mes objets.

Dans l'attente, merci a tous.
dimanche 5 septembre 2004 à 09:03:41 | Re : [ C++ ][ DLL EXPORT ][ LIBERATION MEMOIRE ][ delete[] ]

tibur

Membre Club
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 ).

lundi 6 septembre 2004 à 09:58:20 | Re : [ C++ ][ DLL EXPORT ][ LIBERATION MEMOIRE ][ delete[] ]

vvoisin

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.

Dans l'attente de te lire.
lundi 6 septembre 2004 à 10:25:45 | Re : [ C++ ][ DLL EXPORT ][ LIBERATION MEMOIRE ][ delete[] ]

tibur

Membre Club
Yo

> Dans ton projet, en definitif, tu as fait comment ?

bahhh, je fais les new et les delete dans le programme principal, et j'utilise les objets dans la dll.

tib
lundi 6 septembre 2004 à 10:35:47 | Re : [ C++ ][ DLL EXPORT ][ LIBERATION MEMOIRE ][ delete[] ]

vvoisin

Réponse acceptée !
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 ;)

Merci a toi.

Vince
lundi 6 septembre 2004 à 10:46:55 | Re : [ C++ ][ DLL EXPORT ][ LIBERATION MEMOIRE ][ delete[] ]

tibur

Membre Club
> 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.

tib


Cette discussion est classée dans : report, api, capacemanagement, balancinggroupname, cireportbalancinggroup


Répondre à ce message

Sujets en rapport avec ce message

api webcam [ par alessan ] bonjour,je recherche une api gratuite pour pouvoir piloter, prendre des fotos (sans que cela s'affiche sur l'ecran) une webcam.merci d'avance! Registre ou API windows [ par Will ] Je souhaite recuperer les infos d'un pc (c a d la carte reseau, la carte son, le type de clavier etc...).Que dois-je utiliser, la base de registe wind API capte l'écran [ par Bin Laden ] Salut, Je cherche une fonction API qui capte le contenu de l'écran. QU'EST-CE QU'UNE API ? [ par ronan ] Je suis débutant et j'aimerais bien avoir une définition d'une Api. J'en entends beaucoup parler mais je sais pas trop ce que sais.Merci. API qui recupere son propre path [ par NetCommando ] je veux savoir comment une API recupere son prapre pathdu genre c:\app.exe , pour une aplication nomé "app"merci API pour visualiser des pages HTML???????? [ par Tropdemalaveclesapi ] QQN connait une api pour afficher à l'écran une page HTML? merci à tous de réfléchir à la question! UTILISATIONS D'API [ par DEL ] comment utiliser les api findwindow, findwindowex et sendmessage en C ?merci d'avance =) ++DEL plusieurs dialog [API] [ par Xs ] voila, je faisait un prog, et pis tout d'un coup, j'ai eu envie de changer son design, qui été deja sous API WIN32.ce design consiste a avoir une dial police, style,etc...[API] [ par Xs ] salut !!je voudrais savoir avec quelle fonction API on change la taille, le style, la police, etc.. d'un texte.Y compris et surtout la couleur !!!j'ai [C++ Builder 6] Compatibilité composant graphique CLX et API Windows [ par ashram79 ] Bonjour,Je programme une appli sous C++ Builder 6. Les composants graphiques sont ceux de la nouvelle biblio CLX de Borland, mais je dois maintenir un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,806 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales