Pourquoi ?! question métaphysiologique ...

Pourquoi ?! question métaphysiologique ... - C - Programmation

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 :sweat:  
 
merci par avance  :D


Message édité par in_your_phion le 07-11-2005 à 11:57:13
Reply

Marsh Posté le 07-11-2005 à 11:56:21   

Reply

Marsh Posté le 07-11-2005 à 12:04:54    

le compilo y est pour rien, c'est ton programme qui est foireux [:pingouino]

Reply

Marsh Posté le 07-11-2005 à 12:11:57    

+1
 
Mauvaise gestion de la mémoire.

Reply

Marsh Posté le 07-11-2005 à 12:14:19    

cela dit la question métaphysiologique c'est surtout "Pourquoi le C?!"

Reply

Marsh Posté le 07-11-2005 à 12:15:31    

Sur parce que le C, c'est dit.
 
[:totozzz]

Reply

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 [:pingouino]


 
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  :??:

Message cité 1 fois
Message édité par in_your_phion le 07-11-2005 à 13:06:39
Reply

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...


Message édité par Sve@r le 07-11-2005 à 13:10:46

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

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...)

Reply

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.
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...)


 
 
muf muf ... ok merci  :love:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed