Destructeur d'une classe vecteur
Fermé
armasousou
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
-
4 mars 2013 à 13:21
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 7 mars 2013 à 08:13
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 7 mars 2013 à 08:13
A voir également:
- Destructeur d'une classe vecteur
- Classe ram - Guide
- Comment savoir sa classe ✓ - Forum Loisirs / Divertissements
- Retrouver photo de classe gratuitement - Forum Réseaux sociaux
- Bluetooth mercedes classe a 2005 - Forum Autoradio
- Impossible de trouver ou charger la classe principale @user_jvm_args.txt ✓ - Forum Réseaux sociaux
11 réponses
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
4 mars 2013 à 14:00
4 mars 2013 à 14:00
ba c'est ça. Je ne voi pas ce que tu veux mettre de plus.
Un destructeur, a comme première et principale tâche de libérer la mémoire qui a été allouée dynamiquement.
--
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
Un destructeur, a comme première et principale tâche de libérer la mémoire qui a été allouée dynamiquement.
--
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
armasousou
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
83
4 mars 2013 à 14:02
4 mars 2013 à 14:02
Justement, quand je met ca, je me tape un abandon core dans un main aussi simple que
#include "vecteur.hpp"
int main()
{
Vecteur v(4);
return 0;
}
#include "vecteur.hpp"
int main()
{
Vecteur v(4);
return 0;
}
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
4 mars 2013 à 16:30
4 mars 2013 à 16:30
Je ne vois vraiment pas pourquoi. Essai de faire d'autres opération, le compilateur essai peut être trop d'optimiser.
armasousou
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
83
4 mars 2013 à 22:02
4 mars 2013 à 22:02
Non rien à faire, ya une erreur et elle viens de ce destructeur ...
armasousou
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
83
4 mars 2013 à 22:23
4 mars 2013 à 22:23
A tout hasard, mon destructeur est obligatoire ?? D'un coté, j'utilise un new pour le tableau, mais de l'autre, ya pas de new a proprement parlé pour le vecteur ...
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
5 mars 2013 à 08:24
5 mars 2013 à 08:24
Pour moi, ce que tu as fais est juste.
Dans le doute, j'ai tout de même testé chez moi : aucun souci.
quel compilateur utilises tu ? N'y a t il aucun warning qui s'affiche ?
Donne nous ta ligne de compilation, l'erreur viens peut être de là.
Essai le debugueur.
Dans le doute, j'ai tout de même testé chez moi : aucun souci.
quel compilateur utilises tu ? N'y a t il aucun warning qui s'affiche ?
Donne nous ta ligne de compilation, l'erreur viens peut être de là.
Essai le debugueur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
armasousou
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
83
5 mars 2013 à 10:51
5 mars 2013 à 10:51
J'ai pas de debugeur :x
Et j'utilise just g++ main.cpp vecteur.cpp -o mat
Je vais essayer avec les options -W -Wall
Et j'utilise just g++ main.cpp vecteur.cpp -o mat
Je vais essayer avec les options -W -Wall
armasousou
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
83
5 mars 2013 à 12:06
5 mars 2013 à 12:06
Aucunes erreurs ...
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
5 mars 2013 à 12:41
5 mars 2013 à 12:41
Bon...
essai de mettre
Donne le résultat des commandes :
ldd mat
file mat
Tu n'a pas gdb d'installer ? As tu essayé ?
Si ça ne donne rien d'intéressant, j'aurai un dernier test.
essai de mettre
double * tab=new double[8]; tab[4]=0; delete[] tab;dans ton main (sans le delete du Vecteur) voir ce que ça donne.
Donne le résultat des commandes :
ldd mat
file mat
Tu n'a pas gdb d'installer ? As tu essayé ?
Si ça ne donne rien d'intéressant, j'aurai un dernier test.
armasousou
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
83
5 mars 2013 à 12:53
5 mars 2013 à 12:53
Non, je n'ai pas gdb, je ne connais pas :/ quand j'ai un bug sur un programme, je cherche et j'utilise -w -wall ^^
Aucun probleme quand je lance le programme (sachant que je ne declare aucun vecteur).
Voila les resultats :
mat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xe71b974e074b1ce4944c7fa1c116e4e1e4f756b2, not stripped
linux-vdso.so.1 => (0x00007fff253ff000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1e8aabb000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1e8a6fc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1e8a3ff000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1e8add6000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1e8a1e9000)
Aucun probleme quand je lance le programme (sachant que je ne declare aucun vecteur).
Voila les resultats :
mat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xe71b974e074b1ce4944c7fa1c116e4e1e4f756b2, not stripped
linux-vdso.so.1 => (0x00007fff253ff000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1e8aabb000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1e8a6fc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1e8a3ff000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1e8add6000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1e8a1e9000)
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
5 mars 2013 à 14:18
5 mars 2013 à 14:18
Là je bloque vraiment... en plus il est bien lié à la stdc++.
Essai peut être le delete sans [], mais des cout un peu partout pour bien vérifier que le problème vient du "delete" et pas d'ailleurs.
Essai peut être le delete sans [], mais des cout un peu partout pour bien vérifier que le problème vient du "delete" et pas d'ailleurs.
armasousou
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
83
5 mars 2013 à 15:25
5 mars 2013 à 15:25
Mais en fait, le truc, c'est que j'avais pas de delete dans mon main, je crois que c'est a la fin du programme. aprés le return 0, le programme supprime tous les trucs statiques, dont le vecteur avec le destructeur que j'ai créé, nan ?
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
5 mars 2013 à 15:52
5 mars 2013 à 15:52
oui, c'est ça. Mais pourquoi fait il une erreur ???
ce que je te dit, c'est d'essayer de remplacer "delete[] value"
par "delete value".
ce que je te dit, c'est d'essayer de remplacer "delete[] value"
par "delete value".
armasousou
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
83
Modifié par armasousou le 5/03/2013 à 16:12
Modifié par armasousou le 5/03/2013 à 16:12
Ya plus d'erreur avec juste delete value, mais ca free bien ce qu'il faut ?
Et du coup, je comprend pas la différence entre delete et delete[]
Et du coup, je comprend pas la différence entre delete et delete[]
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
6 mars 2013 à 08:06
6 mars 2013 à 08:06
normalement, delete[] est pour les tableaux (comme dans ton cas) et delete pour les pointeurs simples...
https://www.informit.com/
Je crois avoir déjà rencontrer un problème de ce type.
https://www.informit.com/
Je crois avoir déjà rencontrer un problème de ce type.
armasousou
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
83
6 mars 2013 à 14:58
6 mars 2013 à 14:58
Et j'ai une question, sans rapport avec ce delete, si tu peux m'aider et m'eviter de rouvrir un post ^^
ma classe matrice c'est :
class Matrice
{
int line;
Vecteur** tvect; // tableau de pointeur de vecteur
}
Donc mon constructeur c'est
Matrice::Matrice(int line, int col)
{
int i;
assert(line>0 && col>0);
this->line = line;
Vecteur** tvect = new Vecteur*[line];
for(i=0; i<line; i++)
tvect[i] = new Vecteur(col);
}
Et par conséquant, pour retourner un objet de type Vecteur à partir de Matrice, je renvoi *(tvect[i]); non ??
ma classe matrice c'est :
class Matrice
{
int line;
Vecteur** tvect; // tableau de pointeur de vecteur
}
Donc mon constructeur c'est
Matrice::Matrice(int line, int col)
{
int i;
assert(line>0 && col>0);
this->line = line;
Vecteur** tvect = new Vecteur*[line];
for(i=0; i<line; i++)
tvect[i] = new Vecteur(col);
}
Et par conséquant, pour retourner un objet de type Vecteur à partir de Matrice, je renvoi *(tvect[i]); non ??
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
6 mars 2013 à 16:02
6 mars 2013 à 16:02
oui. Mais pourquoi utiliser un double pointeur ? un simple aurait suffit.
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
7 mars 2013 à 08:13
7 mars 2013 à 08:13
pourquoi te faire chier à passer par une fonction, écris directement :
tvect[i]->vectrand(n);
sans vectrand, difficile de dire.
tvect[i]->vectrand(n);
sans vectrand, difficile de dire.