Bonjour,
J'aurais besoin de votre aide pour corriger un segfault s-il-vous-plaît.
La classe BDD est en fait un B-arbre. La taille du tableau "fils" est de tailleCote. "Dimension" est en quelque sorte la hauteur dans le b-arbre.
Data est un typedef vers un NTL::ZZ (bibliothèque NTL) en gros, considérez que c'est un int.
Voici ma classe :
Code :
- class BDD {
- int dimension;
- int tailleCote;
- BDD* fils;
- Data* valeur;
-
- public:
-
- /**
- * Constructeur
- * @tab Tableau des donnees
- * @param tailleCote Longueur d'un cote d'une dimension
- * @param dimension Nombre de dimension(s).
- */
- BDD(int tailleCote, int dimension = 1);
- };
|
Code :
- /**
- * Constructeur
- * @tab Tableau des donnees
- * @param tailleCote Longueur d'un cote d'une dimension
- * @param dimension Nombre de dimension(s).
- */
- BDD::BDD(int tailleCote, int dimension):dimension(dimension),tailleCote(tailleCote) {
- if (dimension == 0) {
- valeur = new Data;
- fils = 0;
- }
- else {
-
- for (int i= 0 ; i < tailleCote ; i++) {
- fils[i] = *new BDD(tailleCote,dimension - 1);
- }
-
- valeur = 0;
- }
- }
|
Trace GDB :
Dimension de la BDD ?
4
Taille d'une dimension de la base ?
10
Program received signal SIGSEGV, Segmentation fault.
0x080503dd in BDD (this=0x8064058, tailleCote=10, dimension=1) at bdd.cpp:44
44 fils[i] = *new BDD(tailleCote,dimension - 1);
(gdb) where
#0 0x080503dd in BDD (this=0x8064058, tailleCote=10, dimension=1)
at bdd.cpp:44
#1 0x080503d5 in BDD (this=0x8064040, tailleCote=10, dimension=2)
at bdd.cpp:44
#2 0x080503d5 in BDD (this=0x8064028, tailleCote=10, dimension=3)
at bdd.cpp:44
#3 0x080503d5 in BDD (this=0xbfc97bf8, tailleCote=10, dimension=4)
at bdd.cpp:44
#4 0x0804aafa in main () at testPir.cpp:44
Je vous remercie d'avance pour votre aide 
Message édité par ekra le 08-03-2008 à 13:03:09