Erreur mémoire fortran
Rémi
-
Rémi -
Rémi -
Bonjour,
ma question sera assez générale car j'aurais du mal à extraire un cas concrès.
Contexte: dans un logiciel écris majoritairement en Fortran, mais dont l'interface est en C (qui wrappe donc le fortan), j'ai le bug suivant:
- un tableau est rempli (légalement) et est ensuite remodifié (illégalement cette fois).
Je comprends que ce 2nd remplissage vienne du fait que, quelquepart, on doit accéder à une variable incorrectement (dépassement d'un indice max de tableau ou autre).
PAR CONTRE (et c'est la le corps de ma question), je ne comprends pas que, lors du débug manuel (pq biensûr le bug ne se reproduit pas en mode débug), cette erreur de 2nd remplissage illégal s'estompe à l'affichage du tableau.
Concrètement: je rajoute des prints pour remonter à la source du problème, et il apparait qu'un des print "résolve" le problème (plus que 'résoudre', je devrais utiliser le verbe 'tomber en marche': ça marche mais on ne asit pas pourquoi...).
Quelqu'un aurait une explication ?
PS: je vous l'avais dit, ma question n'est pas bien concrète.
Merci d'avance aux esprits supérieurs de la prog qui pourraient m'éclairer
ma question sera assez générale car j'aurais du mal à extraire un cas concrès.
Contexte: dans un logiciel écris majoritairement en Fortran, mais dont l'interface est en C (qui wrappe donc le fortan), j'ai le bug suivant:
- un tableau est rempli (légalement) et est ensuite remodifié (illégalement cette fois).
Je comprends que ce 2nd remplissage vienne du fait que, quelquepart, on doit accéder à une variable incorrectement (dépassement d'un indice max de tableau ou autre).
PAR CONTRE (et c'est la le corps de ma question), je ne comprends pas que, lors du débug manuel (pq biensûr le bug ne se reproduit pas en mode débug), cette erreur de 2nd remplissage illégal s'estompe à l'affichage du tableau.
Concrètement: je rajoute des prints pour remonter à la source du problème, et il apparait qu'un des print "résolve" le problème (plus que 'résoudre', je devrais utiliser le verbe 'tomber en marche': ça marche mais on ne asit pas pourquoi...).
Quelqu'un aurait une explication ?
PS: je vous l'avais dit, ma question n'est pas bien concrète.
Merci d'avance aux esprits supérieurs de la prog qui pourraient m'éclairer
A voir également:
- Erreur mémoire fortran
- Mémoire vive - Guide
- Nettoyer memoire iphone - Guide
- Erreur t32 ✓ - Forum Livebox
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur 0x80070643 - Accueil - Windows
Mais une impression écran + un flush de la sortie standard modifieraient des adresses ?
Il est évident que les adresses du code bougent dès que tu changes une instruction, et selon que tu compiles en debug ou release. Mais le problème n'est probablement pas là, les écritures sauvages dans la zone du code, faciles à faire autrefois, doivent être piégées de nos jours, tu ne peux plus en faire s'en t'en rendre compte.
Même si tu n'ajoutes pas explicitement de variable, l'ajout d'une fonction peut ajouter des variables ou modifier l'ordre de l'édition de liens, avec la même conséquence : des adresses bougent.
"l'ajout d'une fonction peut ajouter des variables ou modifier l'ordre de l'édition de liens, avec la même conséquence : des adresses bougent." -> c'est le genre de réponse que je demandait (effectivement, à question imprécise réponse imprécise).
Merci