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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Visual Basic] utilisation d'un dll C++ && fuite memoire

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Visual Basic] utilisation d'un dll C++ && fuite memoire

n°759224
bilbobman
Posté le 10-06-2004 à 14:27:17  profilanswer
 

Bonjour , je dois utiliser une dll faite en C++ ( fait maison ) , en gros cette dll va allouer un bloc memoire( avec un malloc ) et stocker un chaine de char a l'interieur , je fais donc appel a cette fonction de ma dll a partir de VB , pas de problème de ce coté la tout marche bien .
par contre quand je n'ai plus besoin de cette variable je fais appel a une autre fonction de ma dll qui fait une free ( la_variable ) pour liberer la memoire , ce qui fais gentillement planter mon programme VB , si je ne fais pas appel a cette fonction la memoire n'est jamais liberé donc ca ne peux pas aller .  
 
comment faite vous en VB pour libere la memoire allouer par une dll ? une solution ?  
 
merci d'avance .

mood
Publicité
Posté le 10-06-2004 à 14:27:17  profilanswer
 

n°759251
JihemAir
Je sais pas
Posté le 10-06-2004 à 14:40:02  profilanswer
 

Comment tu passes ta variable: ByRef ou ByVal ?
Je crois que dans ton cas, il faut la passer ByVal pour avoir une copie et non pas un pointeur.
 

n°759757
bilbobman
Posté le 10-06-2004 à 21:01:57  profilanswer
 

dans ma fontion d'alloc en byref , je suis obliger d'avoir un pointeur pour faire mon malloc et il est impossible dans mon cas de determiner la taille de ma chaine de char donc pas le choix , je le passe aussi en byref dans ma fonction de liberation de la memoire .  
 
Sinon pas moyen de trouver de la doc la dessu dans google , a croire que vouloir bien gerer la memoire avec VB c'est pas faisable ....

n°759758
Taz
bisounours-codeur
Posté le 10-06-2004 à 21:04:13  profilanswer
 

« e dois utiliser une dll faite en C++ ( fait maison ) , en gros cette dll va allouer un bloc memoire( avec un malloc ) »
 
je sais déjà d'où elle vient la fuite :o

n°759768
drasche
Posté le 10-06-2004 à 21:15:50  profilanswer
 

VB gère sa mémoire très bien tout seul comme un grand (dans la plupart des cas)
 
Ici clairement, comme Taz le souligne ( :D), le problème est logé dans la DLL.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°759799
bilbobman
Posté le 10-06-2004 à 21:46:47  profilanswer
 

..... que repondre ....
 
j'ai bien comprit que mon malloc alloue la memoire , le problème c'est la liberation , le problème c'est que l'appel a la fonction de ma dll qui doit liberer la memoire ne marche pas dans VB alors que la meme fonction appeler depuis un programme en C marche tres bien .  
Je suis obliger d'utiliser cette fonction de liberation de memoire car VB n'est pas foutu de liberer la memoire allouer par ma dll ( je veux bien le comprendre ) .

n°759801
Taz
bisounours-codeur
Posté le 10-06-2004 à 21:50:30  profilanswer
 

on croyait que faisais du C++ :o

n°759804
drasche
Posté le 10-06-2004 à 21:52:30  profilanswer
 

bin pour moi, vous devriez auditer cette DLL parce que je suis certain que le bug est là dedans, l'allocation mémoire (ou désallocation) doit pas être bien propre [:spamafote]
 
Pour éclaircir le propos de Taz, l'emploi d'une fonction comme malloc, issue du C, n'est pas du tout standard en C++. Il est là le problème. Et la chaîne est sans doute de type char* ? C'est pas du C++ non plus, donc tout ce qu'on peut dire, c'est de conseiller au gars qui a fait cette DLL de refaire son boulot [:spamafote]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°759815
bilbobman
Posté le 10-06-2004 à 22:02:16  profilanswer
 

Il n'y a aucun problème a utiliser des fonction C standard dans du C ++ , a moins de faire le zouave et de mellanger des new avec des free et des malloc avec des delete la ca va poser problème , mais dans le cas d'un bloc memoire allouer avec un malloc et liberé avec un free je voie pas ce qui peux poser problème .  
 
Pourrais tu me dire en quoi un char * ne fais pas partir du C++ standard ( http://www.cplusplus.com/doc/tutorial/tut1-2.html si tu  parles des wchar_t trop recent pour etre utilisé sans risque )

n°759816
bilbobman
Posté le 10-06-2004 à 22:02:51  profilanswer
 

Taz a écrit :

on croyait que faisais du C++ :o


 
si je pouvais je ne ferai que ça mais quand on a pas le choix ...

mood
Publicité
Posté le 10-06-2004 à 22:02:51  profilanswer
 

n°759822
drasche
Posté le 10-06-2004 à 22:11:08  profilanswer
 

pour ce qui est du débat C/C++ je laisse la parole à Taz :D
 
(mais l'essentiel, c'est qu'il ne faut JAMAIS mélanger les deux).  Quant à wchar_t, c'est du pur C [:spamafote]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°759823
bilbobman
Posté le 10-06-2004 à 22:14:37  profilanswer
 

drasche a écrit :

pour ce qui est du débat C/C++ je laisse la parole à Taz :D


 
tu m'excuses mais j'ai pas le temps en se moment , une simple reponse me suffira , qui a déjà eu un problème du meme genre et comment fut il résolu .  
 

drasche a écrit :


(mais l'essentiel, c'est qu'il ne faut JAMAIS mélanger les deux).  


 
parfaitement d'accord , ai-je dit  le contraire ?  
 

drasche a écrit :


 Quant à wchar_t, c'est du pur C [:spamafote]


 
mouais bof ....  
 
Wide character. It is designed as a type to store international characters of a two-byte character set. NOTE: this is a type recently added by the ANSI-C++ standard. Not all compilers support it.

n°759824
drasche
Posté le 10-06-2004 à 22:16:18  profilanswer
 

huhu, j'aurais juré que c'était un type défini par MS dans l'API Win32, soit.
 
Mais pour résoudre ton problème, je pense pas que t'auras une autre solution que celle exposée ici.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°759831
bilbobman
Posté le 10-06-2004 à 22:22:48  profilanswer
 

drasche a écrit :

huhu, j'aurais juré que c'était un type défini par MS dans l'API Win32, soit.


 
beark beark , enfin je t'avoue que je n'ai jamais utilisé ce type de variable et que je ne vais pas y toucher avant quelques années mais la n'est pas le problème  
 

drasche a écrit :


Mais pour résoudre ton problème, je pense pas que t'auras une autre solution que celle exposée ici.


 
argh argh argh enfin   avec un peu de chance , enfin je vous tiens au courant des que j'ai la solution , cochonerie de VB va


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Visual Basic] utilisation d'un dll C++ && fuite memoire

 

Sujets relatifs
pure basic (equipe)[MYSQL]utilisation de mysql et phpmyadmin sur 2 postes
utilisation de blibotheque C++ en C#Pb avec Edit Box sous MS Visual C++
Tutoriaux Visual Studio Installer...Rafraichissé moi la memoire, requete sql
Performances Visual Basic 6 sous Windows NT 4[Visual C++ .NET] Erreur de link à la compilation
pb d'utilisation des thread sous linux - Résolu 
Plus de sujets relatifs à : [Visual Basic] utilisation d'un dll C++ && fuite memoire


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