none
XamlReader->Load et libération de mémoire allouée RRS feed

  • Discussion générale

  • Bonjour à tous et toutes,
    Ça fait un moment que je sèche.

    Pour créer un dialog on utilise un XamlReader, dans le constructeur, de la façon suivante :

    CMessageDlg::CMessageDlg
    {
        XmlReader^    oXmlReader;
        oXmlReader = XmlReader::Create(System::String::Concat(m_AppPath,"Dlg.xaml"));
        m_pWnd = (Window^)XamlReader::Load(oXmlReader);
    oXmlReader->Close();
    //Initialisation, etc...

    Dans le finaliseur et donc le destructeur :

        delete m_pWnd;    
    et à chaque fois qu'on en besoin ailleurs on en crée une instance :

    void Showmes
    {
        myDlg = gcnew CMessageDlg();
        myDlg.Show();
        sleep(1000);
        myDlg.Close();
        delete myDlg;
    }


    Mon Pb est je m'attends à ce que la mémoire allouée après Showmes soit la même qu'avant. Est ce n'est pas le cas.
    Le gros de l'augmentation de la mémoire consommée est dû aux lignes :


    - m_pWnd = (Window^)XamlReader::Load(oXmlReader);

    - myDlg.Show();

    et n'est jamais libéré même en sortant de tous les blocs, ce qu'est sensé faire le GC.
    J'ai comme l'impression que les ressources allouées ne sont jamais désalouées.
    Une idée ?
    Merci d'avance.

    • Type modifié Aurel Bera mercredi 19 décembre 2012 07:32 NR
    mercredi 12 décembre 2012 08:34

Toutes les réponses