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

C++ Discussion :

Probl�me d'allocation dans ce code ?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par d�faut Probl�me d'allocation dans ce code ?
    Bonjour,

    j'utilise une m�thode pour remplir une map d'objets index�s par leurs noms.

    La d�claration de cette map est la suivante :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    std::map<CString,monTypeObjet> maMap;
    Pour la remplir, je me sers d'une boucle, que voici :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    /*prototype*/
     
    monTypeObjet *ptrObjet = new monTypeObjet();
     
    /* Autres déclarations, blabla */
     
    /*boucle*/
    while(maCondition)
    {
      ptrObjet -> remplirObjet(unParametreQuiChangeAChaquePassageDansLaBoucle);
      maMap[nomObjet]=*(ptrObjet);
    }
     
    /* ...*/
    J'ai l'impression qu'il y a un probl�me d'allocation (j'en suis m�me sur, car j'obtiens des r�sultats faux) mais je ne vois pas trop comment le r�soudre...

  2. #2
    Membre �clair� Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Par d�faut
    L� je vois pas trop.
    Donnes nous le code de remplirObjet si possible et de monTypeObjet

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class monTypeObjet
    {
    private:
    BSTR unAttribut;
    int unAutreAttribut;
    /*etc.*/
     
    public:
    monTypeObjet();
    ~monTypeObjet();
     
    void remplirObjet(CString filePath);
    };
    et

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    void monTypeObjet::remplirObjet(CString filePath)
    {
    /*Ouverture d'un fichier, lecture dans ce fichier, et remplissage des attributs, du genre: */
     
    unAutreAttribut = unTrucLuDansLeFichier;
    /*etc.*/
    }
    Rien de sorcier, en somme...

  4. #4
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 297
    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 297
    Billets dans le blog
    2
    Par d�faut
    Deux choses:

    1/ Je d�conseille de m�langer MFC et STL (CString c'est la MFC, std::map c'est la STL). la classe std::string remplace avantageusement la CString. (Bon parfois on n'a pas vraiment le choix, j'en conviens.)

    2/ La ligne
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    maMap[nomObjet]=*(ptrObjet);
    utilise le constructeur par copie de monTypeObjet. Es-tu certain que ce constructeur par copie est correct?

  5. #5
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Les conteneurs standard fonctionnent avec des valeurs, qui en particulier doivent �tre convenablement copiables dans le sens usuel du terme.
    Ton type n'a pas l'air de se comporter comme une valeur � cause du membre BSTR, qui n'est qu'un pointeur � priori.

    Ensuite tu utilises des pointeurs et de l'allocation dynamique, ce qui semble compl�tement inutile ici.

  6. #6
    Membre �clair� Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Par d�faut
    Si tu utilises ceci :
    Citation Envoy� par magicpm7 Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    std::map<CString,monTypeObjet> maMap;
    Pour la remplir, je me sers d'une boucle, que voici :

    [CODE]/*prototype*/

    monTypeObjet *ptrObjet = new monTypeObjet();
    parceque tu penses ainsi r�utiliser le m�me objet pour �conomiser des instanciations dans ta boucle --> dis toi bien que c'est une tr�s mauvaise id�e.

    Il vaut mieux au contraire limit� la port� des variable � la boucle.

Discussions similaires

  1. Probl�me try-catch dans mon code
    Par little pepito dans le forum Langage
    R�ponses: 7
    Dernier message: 11/06/2007, 12h22
  2. R�ponses: 16
    Dernier message: 18/10/2006, 22h52
  3. Probl�me de transparence dans le code.
    Par Rifton007 dans le forum VB 6 et ant�rieur
    R�ponses: 2
    Dernier message: 16/07/2006, 20h40
  4. Probl�me de param�tres dans mon code javascript
    Par cocacollection dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 15/03/2006, 10h53
  5. Probl�me avec Between dans un code
    Par Sendo dans le forum Access
    R�ponses: 4
    Dernier message: 02/10/2005, 18h44

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