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 :

tableau de pointeurs et new, delete


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 24
    Par défaut tableau de pointeurs et new, delete
    bonjour,

    j'ai un bout de code ci dessous et j'aimerai savoir s'il fait bien ce que je veux.
    Alors CCarte est une classe (pour les déclarations elles sont deja faites et ce n'est pas l'objet de ma question )


    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
    CCarte *m_p_Carte[15];
        for(i=0;i<15;i++)
        {
            m_p_Carte[i] = NULL;
        }
     
    /*..*/
        for(i=0;i<15;i++)
        {
        m_p_Carte[i] = new CCarte(Argument);
        }
    /*..*/
        delete m_p_Carte;   
     
        for(i = 0;i < 15;i++)
        {
            m_p_Carte[i] = NULL;
        }
    Donc j'ai déclaré un tableau de pointeurs sur mon objet. ensuite je veux les initialiser à NULL . Puis plus tard je veux créer mes pointeurs sur mes objets (en gros j'aurai 15 pointeurs sur 15 objets). Et à la fin je veux supprimer mes pointeur sur mes objets. Est ce que ceci correspond au programme ci-dessus. J'ai essayé des delete m_p_Carte[i] dans une boucle for mais il aime pas. c'est normal? J'ai pas bien saisi la notion de tableau de pointeurs en fait.
    Merci d'avance pour vos réponses

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Déjà, m_p_carte est un "tableau statique" (son stockage est "automatique" en fait, puis qu'il est en variable locale) donc pas de delete sur le tableau lui-même.

    Ensuite, c'est bien les delete m_p_carte[i] dans une boucle for qu'il faut utiliser.
    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.

  3. #3
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Non, ce que tu donnes ne fais pas ce que tu veux.

    Pour , je ne sais même pas ce que ça peut faire


    Qu'est-ce que tu avais comme erreur quand tu faisais dans ta boucle ?

  4. #4
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 24
    Par défaut
    ok bon ben je vais reessayer merci

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 24
    Par défaut
    En fait je travailel sous builder c++.

    quand je faisais delete m_p_carte[i] eh bien quand j'utilise le .exe il me dit access violation à l'adresse...

    Mais bizarement quand je l'execute à partir de builder il ne me jette pas. Je ne comprend pas; Si tu a une idée

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Je peux voir le code final ?
    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.

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Par défaut
    Citation Envoyé par luckydigit
    Mais bizarement quand je l'execute à partir de builder il ne me jette pas. Je ne comprend pas; Si tu a une idée
    Le programme ne se comporte sûrement pas de la même manière en mode debug c'est tout. Ca n'enlève rien au fait que c'est faux...

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    Ca pourrait être :

    - une double désallocation
    - une corruption de la mémoire allouée
    - une corruption du tableau
    - un problème dans le destructeur de CCarte
    - ...

    Plus de détails seraient les bienvenus.

  9. #9
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CCarte *m_p_Carte[15];
        for(i=0;i<15;i++)
        {
            m_p_Carte[i] = NULL;
        }
    peut être remplacé par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CCarte *m_p_Carte[15]={NULL};

  10. #10
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par seriousme
    Ca désalloue la zone pointé par le pointeur stocké dans m_p_Carte[0].
    Ah oui, c'est vrai... J'y avais pas pensé ^^
    Merci !

  11. #11
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Citation Envoyé par Eusebe
    Ah oui, c'est vrai... J'y avais pas pensé ^^
    Merci !
    Euh en fait après réflexion c'est peut être pas ça.
    c'est:
    qui le ferait.

  12. #12
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par luckydigit
    En fait je travailel sous builder c++.
    Il y a TList de la VCL qui est plus approprié pour cela plutot qu'un tableau statique.
    Sinon je conseillerais sd::vector

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    Citation Envoyé par Médinoc
    Je peux voir le code final ?
    moi aussi j'aimerais bien voir le code final !!

Discussions similaires

  1. pointeur new delete
    Par loisir1976 dans le forum Débuter
    Réponses: 7
    Dernier message: 20/06/2011, 17h30
  2. [Pointeur]plusieurs new, un seul delete ?
    Par snoop dans le forum C++
    Réponses: 4
    Dernier message: 18/07/2006, 18h33
  3. tableau de pointeurs
    Par seal3 dans le forum C++
    Réponses: 7
    Dernier message: 01/11/2005, 20h51
  4. Tableau de pointeurs de fonctions
    Par Alp dans le forum C++
    Réponses: 7
    Dernier message: 29/10/2005, 13h19
  5. Namespace et surcharge operator new/delete
    Par ZeLegolas dans le forum C++
    Réponses: 11
    Dernier message: 26/07/2005, 13h55

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