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 :

[MFC] Utilisation m�moire


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    19
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Par d�faut [MFC] Utilisation m�moire
    Comment fermer correctement un dialogue secondaire, i.e. lib�rer toute la m�moire allou�e pour ce dialogue ?

    J'ai cr�� deux dialogues minimaux : le premier comprenant juste un boutton qui ouvre le second, le second un boutton de fermeture. Si j'effectue plusieurs ouvertures / fermetures du second dialogue, la m�moire utilis�e grossit sans cesse.
    Pour fermer le second dialogue j'ai essay� OnOK(), OnCancel(), DestroyWindow(), EndDialog().

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    sans voir ton code je dirais que tu fais des allocations memoires non relach�es ..
    verfie tes new / delete .


  3. #3
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    19
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Par d�faut
    Non :)

    mais pour aller un peu plus loin que ta signature :
    dans mon appli je n'utilise qu'au plus des r�f�rences .. z�ro free/new/malloc/delete
    dans mon exemple y'a VRAIMENT que deux bouttons ...

    sic

  4. #4
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    si tu n'as pas d'allocations je ne vois pas comment �a peut grossir ....
    renversement de la preuve ...

    Comment d�termines tu que tu as des pertes m�moire ?
    et si tu nous montrais un peu de code ...

  5. #5
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    19
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Par d�faut
    Citation Envoy� par farscape
    si tu n'as pas d'allocations je ne vois pas comment �a peut grossir ....
    d'o� mon appel � l'aide
    renversement de la preuve ...
    ben je sais pas trop ce que fais Visual/Wizard/Windows .. mais des pointeurs trainent par d�faut dans le code g�n�r� par le wizard ..

    Comment d�termines tu que tu as des pertes m�moire ?
    taskmanager (que je ne brutalise pas hein) - j'attends entre les relev�s
    et si tu nous montrais un peu de code ...
    ben y'a pas grand chose, le dialogue principal a 1 boutton :
    dialog2 dlg(this);
    dlg.DoModal();

    le dialogue secondaire a 1 boutton :
    OnOK(); / OnCancel(); / DestroyWindow(); / EndDialog() ...

    Thx

  6. #6
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    si tu lances ton programme en trace debug ,il y a des memory leaks a la fin ?
    si non pas de fuite memoire .

  7. #7
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    19
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Par d�faut
    Ben non .. sinon je me serais abstenu de polluer ce forum :[

    si tu n'es pas vraiment convaincu et que tu en as le temps (2min)
    cr�es toi 2 dialogues dans lesquels tu mets des objets auxquels tu n'associes aucune action (juste pour prendre un peu de m�moire, que ca se voit plus facilement dans le taskmanager).
    Il faut juste un boutton pour lancer le second dialogue.
    Ensuite tu ouvres et fermes le second en surveillant ton taskmanager : la m�moire occup�e augmente doucement mais ne revient jamais � son niveau de d�part.

    et l�, je s�che ... snif
    Merci quand m�me de prendre le temps de me r�pondre :)

  8. #8
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    tu es en debug ? tu utilises VS.NET ?

  9. #9
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    19
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Par d�faut
    arf, j'aimerais bien .. mais je suis sous Visual C++ 6.0

  10. #10
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    et bien en fait j'ai d�j� fait le test ,rien de probant
    �a augmente au premier lancement de la deuxi�me dialogue ,
    a sa fermeture �a diminue par de la totalit� ,puis je relance
    �a n'augmente plus ...

    je pense que depuis que les MFC existent (depuis ~93) et depuis le temps que je les pratiques (94) ,si il y avait un probl�me de cette nature ,c'est � dire une fuite de m�moire somme toute assez basique �a se saurait .

    je pencherais plut�t pour une approximation du gestionnaire des taches.

    j'ai les m�mes doutes en ce qui concerne le d�comptage temps r�el des objets GDI.

    D�ailleurs j'ai refais un test sur un prog win32 simple avec VC6.0:
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
     	// TODO: Place code here.
    	MSG msg;
    	HACCEL hAccelTable;
     
    	// Initialize global strings
    	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    	LoadString(hInstance, IDC_ESSAILEAKS, szWindowClass, MAX_LOADSTRING);
    	MyRegisterClass(hInstance);
     
    	// Perform application initialization:
    	if (!InitInstance (hInstance, nCmdShow)) 
    	{
    		return FALSE;
    	}
     
    	hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_ESSAILEAKS);
     
    	MessageBox(NULL,"Avant "," ",0);
     
    	char *pdata= new char [1000000];
     
    	MessageBox(NULL,"Alloc "," ",0);
     
    	delete pdata;
     
    	MessageBox(NULL,"Free "," ",0);
     
    	pdata= new char [1000000];
     
    	MessageBox(NULL,"Alloc "," ",0);
     
    	delete pdata;
     
    	// Main message loop:
    	while (GetMessage(&msg, NULL, 0, 0)) 
    	{
    		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
    		{
    			TranslateMessage(&msg);
    			DispatchMessage(&msg);
    		}
    	}
     
    	return msg.wParam;
    }
    voila les consommations memoires successives renvoy�es par le gestionnaire des taches sur mon poste XP- PRO:

    2752 K : avant
    3768 K : Alloc
    2792 K : Free
    3772 K : Alloc
    2792 K : dernier free .


  11. #11
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    19
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Par d�faut
    Merci bien :)
    l'augmentation n'est bien sure pas exponentielle mais si tu la �galement constat�e �a me rassure ..
    et comme mon appli est destin�ee � ce genre d'ouvertures/fermetures successives, je craignais que la m�moire y passe trop rapidement

Discussions similaires

  1. Utilisation M�moire d'une application
    Par scorplex dans le forum Composants VCL
    R�ponses: 8
    Dernier message: 21/05/2005, 03h01
  2. R�ponses: 1
    Dernier message: 10/05/2005, 14h31
  3. [MFC] utilisation de printPreview
    Par Tsunamis dans le forum MFC
    R�ponses: 7
    Dernier message: 05/04/2005, 10h14
  4. [MFC] Utilisation de sockets
    Par keupon dans le forum MFC
    R�ponses: 2
    Dernier message: 28/01/2004, 14h37
  5. [MFC] Utilisation Drivers
    Par LAPLACE dans le forum MFC
    R�ponses: 4
    Dernier message: 21/12/2002, 10h29

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