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] Augmentation en m�moire


Sujet :

MFC

  1. #1
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut [MFC] Augmentation en m�moire
    Salut

    C'est de nouveau une question en g�n�rale. J'ai mon programme qui retourne normalement mais il prend tjs de plus en plus de ressource memoire malgr� que j'efface tt ce que j'alloue, et je fais confiance � la destruction automatique de chaque fin de m�thode.

    D'o� peut venir le probl�me de l'augmentation m�moire.

    Merci

    Pitch

  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 ,
    a l'ouverture d'objets graphiques sans relachement .
    exemple bitmap,font, brush etc.... pour le gdi .
    maintenant pour le reste verifier les memory leaks en debug .


  3. #3
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    Je les vois ou les memoryleaks? Qu'est ce que c'est?

    C'est ce qu'on voit quand on est en debug et qu'on arrete le prog et qu'il marque apres?

  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
    yes il met en clair memory leaks avec eventuellement le nom du source et la ligne de l'allocation qui n'a pas ete relach�e .
    dans le meilleur des cas il suffit de double clicker sur la ligne pour arriver sur le code en question...

  5. #5
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    la est ttes l'astuce je n'ai aucun memory leaks car je les ai d�j� tous nettoy�.

    Le passage de param�tre au m�thode peut faire monter la m�moire? Elle monte en g�n�rale de 4 � 10-12 octets.

  6. #6
    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
    si t'as les moyens, tu peux acheter BoundChecker (de numega compuware), il est tres bien pour ca, ou alors au moins le t�l�charger en version d'essai

    a+

    (je devrais me faire payer � chaque fois que je leur fais de la pub ... )

  7. #7
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    Farscape tu as �crit � l'ouverture d'objets graphiques sans relachement . Tu veux dire quoi par l�?

    Le programme BoundsChecker j'ai �t� sur le site pour la version d'essai, on verra ce que ca donnera. (Si il me l'envoi )

  8. #8
    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
    re,
    sur quel OS tu executes ton prog ?
    sur 2000/XP regarde avec le gestionnaire des taches en rajoutant des infos
    menu affichage gestions des colonnes .
    pour rajouter les <> infos utiles comme les objets GDI les handles etc..

    tu as bien sur tous les sources :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    tu ouvres des threads ?


  9. #9
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    Je travaille sur XP et j'ai afficher d'autres colonnes mais que dois je tirer par exemple de la colonnne Handle, ou GDI?

    Pour le debug oui c dans chaque source. Et j'ai encore verif j'ai pas de memoru leaks.

    Je cree et supprime souvent un thread dans mon applic. Mais il n'alloue rien lui.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 10
    Par d�faut
    ??
    Le passage de param�tre utilise de la m�moire oui, mais la m�moire est lib�r�e lors de la sortie de fonction si le destructeur est bien fait...
    Etrange que tu n'aies pas de fuite m�moire indiqu�e dans le debugger.
    Quelles sont les choses que tu fais en release et pas en debug? Les MFC sont elles li�es dynamiquement (ou statiquement) dans les deux cas? V�rifie que les options de compilation/link sont les m�mes ( � l'exception bien s�r du mode...).

  11. #11
    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
    dans tes threads tu sors comment ?
    tu ne ferais un exitthread par hasard ?


  12. #12
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Par d�faut
    si je ne me trompes pas, et si tu l'utilises bien s�r, AfxBeginThread() cr�e un objet CWinThread qu'il est n�cessaire de lib�rer ...

    ps : Au fait, � quoi �a sert ce qu'� �crit farscape :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    #ifdef _DEBUG 
    #define new DEBUG_NEW 
    #undef THIS_FILE 
    static char THIS_FILE[] = __FILE__; 
    #endif
    C'est utile ? paske j'ai plein de programmes dont les .cpp ont pas �a !

  13. #13
    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
    ca sert a avoir la trace des fuites de memoire en mode debug trace.
    le fameux memory leaks avec le nom du source l'emplacement de l'allocation
    non relach�e et meme la gestion du double click sur la ligne pour aller directe
    dessus.
    alors pourquoi s'en priver ?

  14. #14
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    POur ce qui est du thread il est cr�� par CreateThread et tu� par Terminate thread.

    Je travail en mode debug, et mes MFC sont li�es statiquement pour que je puisse m'etre mon application sur d'autres ordis ou il n'y a pas de Visual C++6.0.

    J'ai constat� un truc aussi, quand je minimise mon applic elle diminue de 3/4 en m�moire et quand je la maximise il ne remonte pas il reste au 3/4. Comment ca se fait??? En tt cas c pas mal lol

  15. #15
    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
    Citation Envoy� par pitch21
    POur ce qui est du thread il est cr�� par CreateThread et tu� par Terminate thread.
    alors ton pb peux venir de la !
    Terminate thread doit etre utilis� en dernier ressort pour detruire un thread.
    extrait MSDN:
    TerminateThread is a dangerous function that should only be used in the most extreme cases. You should call TerminateThread only if you know exactly what the target thread is doing, and you control all of the code that the target thread could possibly be running at the time of the termination. For example, TerminateThread can result in the following problems:

    * If the target thread owns a critical section, the critical section will not be released.
    * If the target thread is allocating memory from the heap, the heap lock will not be released.
    * If the target thread is executing certain kernel32 calls when it is terminated, the kernel32 state for the thread's process could be inconsistent.
    * If the target thread is manipulating the global state of a shared DLL, the state of the DLL could be destroyed, affecting other users of the DLL.

    A thread cannot protect itself against TerminateThread, other than by controlling access to its handles. The thread handle returned by the CreateThread and CreateProcess functions has THREAD_TERMINATE access, so any caller holding one of these handles can terminate your thread.

  16. #16
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    Oui mais alors vous savez me donner une methode qui quitte un thread en prenant son ID.

  17. #17
    R�dacteur
    Avatar de abelman
    Inscrit en
    F�vrier 2003
    Messages
    1 106
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2003
    Messages : 1 106
    Par d�faut
    pour arr�ter tes threads proprement, il faut qu'il se termine d'eux m�me.

    Ce que tu peux faire c'est mettre en place une synchronisation avec tes threads.

    Par exemple si dans ton thread tu as une boucle, utilise un CEvent et � chaque it�ration v�rifie si il est signal� ou non. Si il est signal�, sort du thread.

    Pour le signaler en dehors du thread (ce qui revient � arr�ter le thread) tu fais TonCEvent.Set(). Puis tu fais un WaitForSingleObject sur le thread pour attendre sa fin.

  18. #18
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    Dans mon thread il n'y a pas vraiment de boucle, il y a une attente de notification (changement sur un rep) donc je ne peux pas me permette d'attendre un event. A moins que l'on puisse mettre 2 notifications????

  19. #19
    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
    bien sur voir WaitForMultipleObjects
    pour infos c'est que j'utilise dans le post sur la gestion du port serie avec un thread de traitement.
    un event pour la reception d'un evenement serie et un event pour sortir du thread .

  20. #20
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    En effet ca marche pas trop mal j'ai ma memoire qui monte et qui descend donc bon signe

    Mais plus haut j'avais marque un truc qui m'intriguait aussi -> Pourquoi quand on minimise et puis maximise la taille de l'applic diminue considerablement en memoire

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. [C#][.NET 2.0]Augmentation de m�moire
    Par genki dans le forum G�n�ral Dotnet
    R�ponses: 6
    Dernier message: 25/04/2007, 10h04
  2. commetn augmenter la m�moire
    Par chouchou93 dans le forum Eclipse Java
    R�ponses: 14
    Dernier message: 27/06/2006, 12h09
  3. [MFC] Augmenter la taille des fonts
    Par OverLorD34 dans le forum MFC
    R�ponses: 3
    Dernier message: 06/04/2006, 10h28
  4. R�ponses: 21
    Dernier message: 01/02/2006, 09h17
  5. [MFC] Probl�me de m�moire
    Par benahpets dans le forum MFC
    R�ponses: 8
    Dernier message: 03/11/2005, 17h08

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