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

MFC Discussion :

[MSVC6][MFC] CString + Exception = fuite de mémoire ?


Sujet :

MFC

  1. #1
    Membre actif Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Points : 288
    Points
    288
    Par défaut [MSVC6][MFC] CString + Exception = fuite de mémoire ?
    Bonjour,

    j'ai un code du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {
     CString sErreur;
    ...
     sErreur = _T("toto");
    ...
     throw cExceptionFaxMgr(_T("Exception");
    }
    J'ai un leak à la fin du programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Detected memory leaks!
    Dumping objects ->
    strcore.cpp(118) : {69} normal block at 0x009B4B10, 17 bytes long.
     Data: <            toto> 01 00 00 00 04 00 00 00 04 00 00 00 74 6F 74 6F 
    Object dump complete.
    alors que si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    {
     try
     {
      CString sErreur;
    ...
      sErreur = _T("toto");
    ...
      throw cExceptionFaxMgr(_T("Exception");
     }
     catch(cExceptionBase& e)
     {
      TRACE(e.What());
     }
    }
    et là pas de leak !
    Je n'arrive pas à comprendre pourquoi, à moins que ce ne soit un bug MSVC6 ?

  2. #2
    Membre actif Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Points : 288
    Points
    288
    Par défaut
    je crois avoir trouvé:
    j'ai 2 fonctions:
    void WINAPI f1()
    void f2()

    f1() appel f2(), et f2() lève une exception que f1() "n'attrape" pas.
    il doit s'agir d'un effet de bord du aux différentes convention d'appel
    f1() => __stdcall (WINAPI)
    f2() => __cdecl

    si je met un bloc try / catch dans f1() lors de l'appel à f2(), plus de leak.

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

Discussions similaires

  1. [MFC] Comment corriger ces fuites de mémoire
    Par Philippe320 dans le forum MFC
    Réponses: 8
    Dernier message: 07/03/2006, 13h50
  2. CString et fuite mémoire
    Par r0d dans le forum MFC
    Réponses: 9
    Dernier message: 23/02/2006, 19h41
  3. [MFC] CString::Format()
    Par r0d dans le forum MFC
    Réponses: 3
    Dernier message: 04/08/2005, 18h56
  4. Fuite de mémoire en utilisant le template list
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 9
    Dernier message: 18/07/2005, 20h44
  5. Réponses: 8
    Dernier message: 17/10/2002, 12h52

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