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

Windows Discussion :

soulever une interrogation


Sujet :

Windows

  1. #1
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut soulever une interrogation
    bonjour tous ,
    j'intègre l'instruction suivante dans le traitement d'un message WM_CREATE :
    plus loin ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tampon=(char*)malloc(la_quantité_voulue);
    puis lors du ttt du message WM_DESTROY :
    ce qui me provoque une erreur à la fermeture de l'application.
    Alors j'enlève cette dernière ligne et tout fonctionne bien !
    Je pose alors la question suivante :
    Y a-t-il fuite de mémoire ou Windows s'occupe-t-il de rétrocéder les octets alloués sur le tas ; car enfin ,la variable "tampon" est certes déclarée statique mais l'appel à "malloc()" consomme de la mémoire dynamique !?

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Salut d'après ce que je comprends le tableau char *tampon est déclaré dans l'événement WM_CREATE.
    Or ce n'est pas là qu'il faut mettre cette déclaration mais plutôt avant le switch case
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    voLRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
    
    {
    static char *tampon;
    switch (uMsg)
    {case WM_CREATE:
    tampon=(char*)malloc(x);
    return 0;

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    WM_CREATE n'est reçu qu'une fois, donc pas de suite.

    Par contre, avec static, tu ne peux pas avoir deux fois la même fenêtre dans le même processus, ou bien les ennuis commencent.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. problem avec un set dans une interrogation sql
    Par scofild20 dans le forum SQL
    Réponses: 2
    Dernier message: 27/04/2009, 13h04
  2. Réponses: 1
    Dernier message: 27/04/2009, 07h16
  3. Réponses: 0
    Dernier message: 11/02/2009, 18h09
  4. Inhiber une interrogation en report6i
    Par naossql dans le forum Reports
    Réponses: 2
    Dernier message: 16/12/2008, 11h10
  5. Réponses: 3
    Dernier message: 06/06/2006, 12h22

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