dybman
Messages postés2Date d'inscriptiondimanche 1 juillet 2001StatutMembreDernière intervention17 mai 2007
-
16 mai 2007 à 20:49
dybman
Messages postés2Date d'inscriptiondimanche 1 juillet 2001StatutMembreDernière intervention17 mai 2007
-
17 mai 2007 à 15:59
Voici le code qui pose problème:
Je pense que la valeur Key prend de trop grande valeur et fais un dépassement de mémoire tampon mais je trouve pas le bug.
Best->Lock = Key1;
Info = &Best->Info;
ClearInfo(Info);
return Info;
}
/* HashKey() */
uint64 HashKey(const mboard *Board) {
int S, P;
uint64 Key;
Key = 0ULL;
S = 0; /* Turn */ P (Board->Colour WHITE) ? WHITE_MAN : BLACK_MAN;
Key ^= HashKeyTable[S][P];
for (S = S1; S <= S50; S++) {
P = HashPiece(&Board->Square[S]);
if (P != NO_PIECE) Key ^= HashKeyTable[S][P];
}
return Key;
}
/* HashPiece() */
int HashPiece(const msquare *Square) {
int P;
P = NO_PIECE;
switch (Square->Colour) {
case WHITE :
P = (! Square->IsKing) ? WHITE_MAN : WHITE_KING;
break;
case BLACK :
P = (! Square->IsKing) ? BLACK_MAN : BLACK_KING;
break;
}
return P;
}
/* InitRandom() */
static void InitRandom(void) {
int I, N;
for (I 0, N 0x01; I < 256; I++) {
BchTable[I] = N;
if ((N += N) >= 0x100) N ^= 0x171;
}
BchTable[255] = 0; /* So that every value is used only once */
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 17 mai 2007 à 12:35
Bas a toi de regarder, mais des tests dans ton code la ou tu pense qu'il peut y avoir un pb, et fait des sorties sur la console pour savoir ou ya des pbs. On est pas mieux placé que toi pour débugger ton code. Tu peux utiliser des macros pour ca:
int main()
{
ASSERT(5 < 4); // Evidemment, le test échoue. Donc un msg est affiché.
printf("coucou"); // ligne non affichée
system("PAUSE");
return 0;
};
Donc tu places en haut de ton fichier, cette macro ASSERT(X) et tu fais des tests partout.
Quand ton programme marche, tu neutralises l'effet de la macro, on changeant sa définition:
#define ASSERT(X)
La macro sera donc vide, et aucun test ne sera généré.