IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Je pense avoir des memory leaks


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 31
    Points : 25
    Points
    25
    Par défaut Je pense avoir des memory leaks
    Hello,

    J'ai développé un gadget vista dont l'ossature est un .swf créé avec FLEX. Le but est de lire des musiques. Tout fonctionne tres bien mais j'ai récemment incorporé une méthode pour ecrire "ce que j'ecoute" sur MSN. Pour cela, j'ai du créer une DLL activex avec C++ (projet ATL sous visual c++ 2005), DLL appelée via un javascript via FLEX. Des que j'utilise la fonction de la DLL MSN via le javascript au bout d'une 10ene d'appels, j'ai un message d'erreur de windows m'indiquant que le volet windows doit fermer. Après avoir cliqué sur l'option "debogage" visual studio m'a emmené a une fonction m'indiquant un leak sur la mémoire....

    Bref, le code de la fonction DLL qui envoie l'info de "ce que j'écoute" à MSN est le suivant : je suis sur a 100% qu'il n'y a pas de leak ici..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    STDMETHODIMP CclsDLLMSN::SendMessageMSN(BSTR m_strMessage, SHORT show)
    {
    		HWND msnui = NULL;
    		COPYDATASTRUCT msndata;
     
    		// ASCII
    		char Title[256];
    		memset(Title,'\0',sizeof(Title));
     
    		unsigned long length = WideCharToMultiByte (CP_ACP,0, m_strMessage,SysStringLen(m_strMessage), NULL, 0,NULL, NULL);
    		char* strRet = new char[length];
    		length = WideCharToMultiByte (CP_ACP,0, m_strMessage,SysStringLen(m_strMessage), reinterpret_cast <char *>(strRet), length,NULL, NULL);
    		strRet[length] = '\0';
    			sprintf(Title,"\\0Music\\0%i\\0{0}\\0%s\\0\\0\\0\\0\0",show,strRet);
     
     
    		// UTF16
    		WCHAR wstrTitle[256];
    		memset(wstrTitle, 0, sizeof(CHAR)*256);
     
    		// Conversion ASCII vers UTF16
    		int nLen = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)Title, -1, NULL, NULL);
    		MultiByteToWideChar(CP_ACP, 0, (LPCSTR)Title, -1, (LPWSTR)wstrTitle, nLen);
    		msndata.dwData = 0x547;
    		msndata.lpData = (void*)wstrTitle;
    		msndata.cbData = (nLen*2)+2;
     
    		do
    		{
    			USES_CONVERSION;
    			msnui = ::FindWindowEx(NULL, msnui,A2W("MsnMsgrUIManager"), NULL);
    			if (msnui != NULL)
    				::SendMessage(msnui, WM_COPYDATA, (WPARAM)NULL, (LPARAM)&msndata);
    		}while(msnui !=NULL);
    		delete strRet;
    		return S_OK;
    }
    Par contre, la fonction javascript appellée depuis FLEX est la suivante :

    function SendToMSN(txt,show)
    {
    var obj = new ActiveXObject("DLLMSN.clsDLLMSN");
    obj.SendMessageMSN(txt,show);
    }
    Donc en gros, je demande de creer un objet activex a chaque fois que je veux appeller la DLL msn, c'est peut etre pour cela que ca foire au bout d'un moment ??? J'ai essayé d'ajouter un 'delete obj' a la fin mais ca marche pas mieux.

    Je suis sur a 100% que le probleme vient du javascript (ou de la DLL mais franchement je vois pas de probleme de leak ici) car si je n'utilise pas l'appel de la DLL via le javascript depuis FLEX je n'ai aucun probleme de plantage sous le volet windows vista.

    En espérant avoir été assez clair... Si vous avez des idées, je suis preneur. Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    remets ton obj à null après ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Hello,

    Merci de ton aide, mais ca ne fonctionne pas mieux

    A++

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Et bien apres avoir trouvé comment debogger un gadget je me susi appercu que c'est ma DLL qui a un probleme de leak. Désolé... je vais demander de l'aide dans le forum c++

    MErci en tt cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/08/2007, 22h34
  2. Détection des "memory leaks"
    Par rzayani dans le forum Visual C++
    Réponses: 3
    Dernier message: 29/12/2006, 19h54
  3. [MFC] A la chasse au memory leak
    Par Yabo dans le forum MFC
    Réponses: 17
    Dernier message: 27/06/2004, 17h35
  4. Comment avoir des marges dans un TRichEdit ?
    Par nomdutilisateur dans le forum Composants VCL
    Réponses: 5
    Dernier message: 25/06/2004, 09h57
  5. Réponses: 7
    Dernier message: 26/02/2004, 09h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo