Problème tableau C++
Résolu/Fermé
Lynyrd81
Messages postés
59
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
24 avril 2011
-
8 nov. 2009 à 23:11
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 9 nov. 2009 à 21:35
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 9 nov. 2009 à 21:35
A voir également:
- Problème tableau C++
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
5 réponses
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
9 nov. 2009 à 02:30
9 nov. 2009 à 02:30
Le problème c'est que tu recopies ton tableau n'importe où ... si, si ... j'ai bien dit n'importe où.
Utiliser des pointeurs imposent de parfaitement gérer:
- la déclaration,
- l'initialisation ou l'allocation,
- l'utilisation (attention aux débordements),
- la désallocation si allocation.
Si tu ne maîtrises pas toutes ces étapes, il ne faut pas utiliser les pointeurs ou changer de langage.
Mais ne t'inquiète pas, on apprend la rigueur; celle-ci est indispensable avec le 'C'.
D'autre part, même si ta recopie était correcte, elle ne serait pas complète car le tableau est déclaré de taille 4 et tu ne recopies que 3 valeurs.
Bonne continuation.
Utiliser des pointeurs imposent de parfaitement gérer:
- la déclaration,
- l'initialisation ou l'allocation,
- l'utilisation (attention aux débordements),
- la désallocation si allocation.
Si tu ne maîtrises pas toutes ces étapes, il ne faut pas utiliser les pointeurs ou changer de langage.
Mais ne t'inquiète pas, on apprend la rigueur; celle-ci est indispensable avec le 'C'.
D'autre part, même si ta recopie était correcte, elle ne serait pas complète car le tableau est déclaré de taille 4 et tu ne recopies que 3 valeurs.
Bonne continuation.
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
9 nov. 2009 à 03:03
9 nov. 2009 à 03:03
pour ocmpléter et préciser : pour recréer un tableau dynamiquement, il faut utiliser malloc (pour l'allocation). (avec un delete pour la désallocation). Comme a dit Loupius, il faut bien comprendre comment ça marche avant de le faire, sinon tu peux avoir de gros bugs comme des fuites de mémoire.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 nov. 2009 à 10:12
9 nov. 2009 à 10:12
Je reviens sur ce qu'a dit Pacorabanix, en C++ pour créer un tableau dynamiquement, il faut utiliser new et delete pour le détruire. Tu peux utiliser les fonctions C malloc et free, mais ce n'est pas conseillé. Il me semble qu'il ne faut pas non plus croisé les fonctions, c'est à dire utiliser free() sur un tableau créé avec new et inversement.
Il vaut mieux aussi déclarer ta variable Obj ainsi:
Test Obj(tabl);
Et ensuite : this->tab=new int[4];
Il vaut mieux aussi déclarer ta variable Obj ainsi:
Test Obj(tabl);
Et ensuite : this->tab=new int[4];
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
9 nov. 2009 à 21:35
9 nov. 2009 à 21:35
Je viens de remarquer que je me suis mélangé les pinceaux entre new, delete, malloc et free. Toutes mes excuses et merci char sniper.
Lynyrd81
Messages postés
59
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
24 avril 2011
1
9 nov. 2009 à 12:43
9 nov. 2009 à 12:43
Ok! Merci pour vos réponse. C'est vrai que j'avais tout simplement zappé l'allocation mémoire, ça risquait pas de marcher...
Merci encore pour votre aide!
Merci encore pour votre aide!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Lynyrd81
Messages postés
59
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
24 avril 2011
1
9 nov. 2009 à 12:45
9 nov. 2009 à 12:45
Sinon, pour les histoire de nombre d'éléments, c'est une étourderie, il faut bien sûr i<4 dans le for...
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
9 nov. 2009 à 15:27
9 nov. 2009 à 15:27
Un détail:
Il serait plus judicieux de passer la taille du tableau lors de la construction et ceci pour deux raisons:
- La classe n'est plus corrélée à une taille fixée (non utilisation en dur de la taille),
et ce qui en découle
- La classe pourrait fonctionner pour toutes les tailles.
Ce n'est qu'un simple avis, mais je pense que c'est une bonne habitude à prendre: rendre les classes le plus indépendant possible et le plus universel possible.
Bonne continuation.
Il serait plus judicieux de passer la taille du tableau lors de la construction et ceci pour deux raisons:
- La classe n'est plus corrélée à une taille fixée (non utilisation en dur de la taille),
et ce qui en découle
- La classe pourrait fonctionner pour toutes les tailles.
Ce n'est qu'un simple avis, mais je pense que c'est une bonne habitude à prendre: rendre les classes le plus indépendant possible et le plus universel possible.
Bonne continuation.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
>
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
9 nov. 2009 à 15:59
9 nov. 2009 à 15:59
Je n'avais pas relevé car il précise bien que c'est un programme démonstrateur de l'erreur et non le programme en lui même.