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] CString::Format()


Sujet :

MFC

  1. #1
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut [MFC] CString::Format()
    Bonjour à tous,

    je viens de tomber sur quelque chose d'étrange concernant la méthode Format de la classe CString. Peut-être est-ce un bug, ou peut-être une mauvaise utilisation de ma part, mais j'ai perdu une bonne partie de la matinée à cause de ça :/ Voici le code qui pose problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CString csTemp="toto";
    int i=20;
    csTemp.Format("%s--%d",csTemp, i);
    Ce code fonctionne parfaitement bien sur mon pc (windows2000), mais je l'ai testé sur un pc portable (windows xp pro sp2), et là ça plante avec un message d'erreur concernant un "malloc". L'exception est levée dans winheap.cpp (je n'ai pas plus de détail, je ne suis pas au bureau. Mais si le sujet vous intéresse, je pourrais vous en donner vendredi).

    Le fait est que, dans mon exemple, la méthode Format utilise, en paramètre, une CString qui est elle-même ce que la méthode doit retourner. Je comprends que cela puisse poser des problèmes à l'exécution, mais pourquoi ça fonctionne sur une machine et pas sur une autre??

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je comprends que cela puisse poser des problèmes à l'exécution, mais pourquoi ça fonctionne sur une machine et pas sur une autre??
    La magie des comportements indéterminés.

  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    MSDN dit :
    The call will fail if the string object itself is offered as a parameter to Format. For example, the following code:

    CString str = "Some Data";
    str.Format("%s%d", str, 123); // Attention: str is also used in the parameter list.

    will cause unpredictable results

  4. #4
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    Ah oui, en effet. J'avais pourtant jeté un coup d'oeil sur ma msdn locale (celle installée avec visual) et je n'ai pas vu cette remarque.

    Merci.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/12/2014, 19h40
  2. [MFC] CString vers const char*
    Par Rafoo dans le forum MFC
    Réponses: 9
    Dernier message: 17/06/2006, 16h43
  3. [MFC] CString et visual 2005
    Par r0d dans le forum MFC
    Réponses: 8
    Dernier message: 20/03/2006, 15h50
  4. Réponses: 1
    Dernier message: 02/12/2005, 15h18
  5. plantage a cause de CString::Format
    Par e-teo dans le forum MFC
    Réponses: 2
    Dernier message: 18/10/2005, 19h02

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