Pourquoi ?! question métaphysiologique ... - C - Programmation
Marsh Posté le 07-11-2005 à 12:04:54
ReplyMarsh Posté le 07-11-2005 à 12:14:19
cela dit la question métaphysiologique c'est surtout "Pourquoi le C?!"
Marsh Posté le 07-11-2005 à 13:06:00
chrisbk a écrit : le compilo y est pour rien, c'est ton programme qui est foireux |
ok je sais que mon programme est foireux, mais pourquoi l'erreur n'arrive pas au bon moment ? Par exemple des fois le printf() ne s'affiche pas alors qu'il est avant l'erreur !! C'est ca que je trouve bizarre
Marsh Posté le 07-11-2005 à 13:10:25
in_your_phion a écrit : ok je sais que mon programme est foireux, mais pourquoi l'erreur n'arrive pas au bon moment ? Par exemple des fois le printf() ne s'affiche pas alors qu'il est avant l'erreur !! C'est ca que je trouve bizarre |
printf travaille en bufferisé. C'est à dire que ce que tu écris avec printf part d'abord dans un buffer qui est vidé à l'écran que dans 4 cas
1) le buffer est plein
2) le buffer voit arriver un "\\n"
3) tu demandes expréssément un vidage buffer => fflush(stdout)
4) le pgm se termine proprement
Si ton pgm plante avant l'un de ces 4 évènements, le dernier "printf" ne s'affiche pas...
Marsh Posté le 07-11-2005 à 13:10:35
Le propre des problèmes de mémoire, c'est que le comportement est aléatoire.
C'est d'ailleurs à ça qu'on reconnait un problème mémoire.
Quand on y réfléchit, c'est tout à fait logique : ça fait n'importe quoi quand des zones se chevauchent, ou alors le système interrompt le programme parce qu'il essaie de faire n'importe quoi (comme lire une zone qui ne lui appartient pas), bref c'est imprévisible, et lié à nombre de facteurs changeant (état de la mémoire à ce moment-là, taux d'occupation du programme incriminé, degré de "gravité" du bug...)
Marsh Posté le 07-11-2005 à 15:00:31
Elmoricq a écrit : Le propre des problèmes de mémoire, c'est que le comportement est aléatoire. |
muf muf ... ok merci
Marsh Posté le 07-11-2005 à 11:56:21
salut,
Souvent lorsque que le programme compile et plante à l'éxecution, le lieu de l'erreur n'est pas exactement celui ou ça plante. Par exemple, lors d'un "segmentation fault" le programme plante souvent après un printf() et avant le problème d'allocation, ou inversement ... mais pourquoi donc ?! mais ô pourquoi !? ..compilateur cruel
merci par avance
Message édité par in_your_phion le 07-11-2005 à 11:57:13