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
Marsh Posté le 08-03-2008 à 11:59:13
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 :
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