Etrange étrange - C++ - Programmation
Marsh Posté le 12-07-2006 à 12:42:27
pour t'assurer de l'intégrité de i, dans la boucle
const int c_i = i;
et utilise c_i a la place de i
Marsh Posté le 12-07-2006 à 12:45:56
Le soucis est que le code provient d'une bibliothèque, et je n'ai pas très envie de la modifier ...
Marsh Posté le 12-07-2006 à 12:56:56
Bon finalement je l'ai fait ...
Revoici donc le code source (juste la boucle for)
Code :
|
et l'affichage gdb ...
|
est-ce normal qu'il ne trouve pas la variable "c_i" ?
Et "i" a encore bougé...
Marsh Posté le 12-07-2006 à 14:14:07
question:
GECODE_AUTOARRAY(Int::Linear::Term, ts, n+1);
si ça crée un tableau/vecteur de taille n+1, ça va donc de 0 à n en indice.
hors:
for (int i=n; i--; )
va de n-1 à 0 inclus en décrémentant.
normal - pas normal ?
Marsh Posté le 12-07-2006 à 16:20:32
Pour la taille des tableaux : je n'ai aucune idée si c'est normal ou pas ... La bibliothèque en question est assez mystérieuse, mal documentée et incante de la magie noire ... alors pour la question de la taille des tableaux : je n'en sais rien !!!
En tout cas, j'ai résolu le problème. J'avais des données mal initialisées, ce qui a du provoquer du "code aléatoire"... va savoir !
Merci quand même...
Marsh Posté le 12-07-2006 à 12:26:37
Voici une petite erreur que je viens d'avoir, et dont je voudrais avoir vos avis...
Affichage gdb :
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x09b608d6
0x022a0134 in Gecode::MiniModel::LinExpr::post (this=0xbfffe41c, home=0x397a0a0, icl=ICL_DEF) at gecode/minimodel/lin-expr.cc:81
81 min += ts[i].a*ts[i].x.min();
(gdb) print i
$3 = 3
(gdb) print n
$4 = 2
Code source du fichier lin-expr.cc
Petites explications :
Le code source émane d'une librairie C++ (Gecode)
Le code source mis ci-dessus est bien celui du bon fichier (etc )
Ce qui est étrange c'est qu'au sein de la boucle "for" (lignes 79 à 86), la variable "i" n'est jamais incrémentée, pourtant gdb indique que sa valeur (=3) est supérieure à sa valeur d'initialisation (=2)...
Y comprenez vous quelque chose ?