[C++]Erreur de segmentation[Résolu]

Hello,

l’execution de mon programme produit une erreur de segmentation.
La pile d’execution me donne :

[code]Program received signal SIGSEGV, Segmentation fault.
0x080488ad in Matrice::set (this=0x804b008, tab=0x804b018) at matrice.cc:35
warning: Source file is more recent than executable.

35 contenu[i] = new int[getHauteur()];
(gdb) bt
#0 0x080488ad in Matrice::set (this=0x804b008, tab=0x804b018) at matrice.cc:35
#1 0x08048cc9 in Test (this=0x804b008) at test.cc:24
#2 0x08048dd6 in main () at test.cc:37[/code]
ESt-ce que quelqu’un pourrait m’indiquer ce que je dois ajouter, modifier dans le code pour que ça fonctionne.

Merci

c’est moi ou tu essayes d’utiliser un objet que tu n’instancies pas ? Si c’est le cas je pense que c’est normal que ca segfault (c’est même étonnant que le compilateur braille pas)

  setLargeur(10);
  setHauteur(10); 

dans ton test, qui sont, si je ne me trompe pas, des méthodes de ton objet “matrice”, or tu n’as pas déclaré de tel objet en amont ou c’est moi ?

on peut pas passer des paramètres lors de l’isntanciation en C++ ? et de toute facon si tu fais un set avec une matriice “préfabriquée” tu n’as peut etre pas besoin de faire appel a des setters qui tu appelles en amont et qui ne te donneront sans doute pas le résultat que tu veux a la fin.
Sinon, perso, j’ai une petite expérience de la progra C mais j’ai toujours pas fait de C++. Ceci dit, quand je segfault pour des histoires de tableau, c’est en général un malloc de mauvaise taille ou une absence de malloc pour une certaine catégorie de données qui en aurait besoin.
Quand tu fais un int ** qui se comporte donc comme un tableau a 2 dimensions, tu devrais avoir 2 “couches” de malloc à mon sens. A la limite tente avec un tableau “en dur” genre “int[x][y]”, ca devrait te faire le même effet au niveau de ta matrice et ca t’éviteras un certain nombre de prises de tête concernant l’allocation de mémoire, si ton problème est bien la. Et en C l’expérience pouve que mélanger (au sens d’entretenir l’ambiguité) entre tableaux et pointeurs est à éviter le plus possible … je sais pas comment ca se passe en ++ mais bon fais gaffe =)

J’ai résolu mon soucis.
Comme je ne connaisais pas encore les dimansions de mon tableau dans la clase Matrice, j’ai ajouté une méthode init(int x, int y) qui initialise le tableau contenu.
Dans le constructeur de Test, c’est là que la taille sera connue.
Dans mon exemple, j’avais fait ça à la main pour les tests.
Dans dans le constructeur de Test, je récupere les dimensions puis j’appelles la méthode init et àa fonctionne :astonished:

bah voila :stuck_out_tongue: