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 :

Utilisation mémoire élevée


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 39
    Par défaut Utilisation mémoire élevée
    Bonjour,

    J'ai développé une application toute simple qui fait simplement une écoute des communications UDP sur le port 15000 d'un pc et ouvre une boîte de dialogue qui n'affiche absoluement rien pour l'instant. Elle ne contient aucun composant, bref boite de dialogue complètement vide...

    Et pourtant je lance l'appli et je me retrouve avec 3 Mo de mémoire utilisé d'apres le Gestionnaire de tâches de windows XP.

    Est-ce que ça vient de Windows ? Existe-t-il des astuces de programmation pour libérer la mémoire ? Vu que c'est une appli qui va tout le temps tourner sur mon PC je voudrais qu'elle prenne le moins de place possible...

    Voici le code que j'ai tapé pour mieux comprendre ...
    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
    52
    53
    54
    55
     
    #include "stdafx.h"
    #include "ADSLNotice.h"
    #include <winsock2.h>
     
    #pragma comment(lib, "ws2_32.lib")
     
    char buffer[1000];
     
    INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
     
    int APIENTRY _tWinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPTSTR    lpCmdLine,
                         int       nCmdShow)
    {
        WSADATA wsa;
        WSAStartup(MAKEWORD(2, 0), &wsa);
     
        SOCKET sock;
        SOCKADDR_IN sin;
     
        int port = 15000;
     
        sin.sin_family = AF_INET;
        sin.sin_addr.s_addr = INADDR_ANY;
        sin.sin_port = htons(port);
     
        sock = socket(AF_INET, SOCK_DGRAM, 0);
        bind(sock, (SOCKADDR*) &sin, sizeof(sin));
     
        int sinsize = sizeof(sin);
     
        while(1)
        {
            memset(buffer, 0, sizeof(buffer));
            recvfrom(sock, buffer, sizeof(buffer), 0, (SOCKADDR*) &sin, &sinsize);
            DialogBox(0, MAKEINTRESOURCE(IDD_MSG), GetDesktopWindow(), (DLGPROC)About);
        }
     
        return 0;
    }
     
    INT_PTR CALLBACK About(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
      switch(uMsg) 
      {
      case WM_CLOSE:
          EndDialog(hDlg, 1);
          break;
      case WM_COMMAND :
          break;
      }
      return 0;
    }
    Merci d'avance à tous pour votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 39
    Par défaut
    Finalement, j'ai trouvé une réponse par moi même. Cette solution ne s'adapte pas pour les très grosses applications, car cela entraîne une grosse perte de performance, autrement dit un "ramage" enorme de l'application.

    Mais pour les petites applications, tel qu'un écouteur UDP en fond de tâche, un petit appel de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://g.msn.com/9SE/1?http://msdn.microsoft.com/library/en-us/dllproc/base/setprocessworkingsetsize.asp&&DI=6024&IG=c374dfed40084c06987cb818ed7f5050&POS=2&CM=WPU&CE=2&CS=AWP&SR=2" target="_blank">SetProcessWorkingSetSize</a>(GetCurrentProcess(), -1, -1);
    permet de faire chuter l'utilisation de mémoire à 200ko

    Voilà, merci quand même à tous

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

Discussions similaires

  1. Debbugae utilisation mémoire
    Par cauriera dans le forum MFC
    Réponses: 3
    Dernier message: 22/03/2006, 14h37
  2. [C#] Utilisation Mémoire croissante
    Par chnew dans le forum C#
    Réponses: 4
    Dernier message: 03/01/2006, 19h38
  3. [Tomcat][Spring] Problème utilisation mémoire
    Par Wutintin dans le forum Hibernate
    Réponses: 12
    Dernier message: 08/09/2005, 14h57
  4. [MFC] Utilisation mémoire
    Par CTux dans le forum MFC
    Réponses: 10
    Dernier message: 08/07/2005, 09h58
  5. Utilisation Mémoire d'une application
    Par scorplex dans le forum Composants VCL
    Réponses: 8
    Dernier message: 21/05/2005, 03h01

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