15Fermer17
pmandinLe 06/05/2007 à 13:32
GT Turbo (./9) :
Question en C quand c'est pas initialisés cela n'est pas 'init' par défaut a 0 ?


En fait depuis les Tos 3.x, dans les flags d'un programme, on peut préciser si la mémoire doit être initialisée à zéro ou non. Ca a été rajouté parce que autant sur ST, mettre à zéro 512Ko ou 1Mo, ca va, autant sur un TT ou Falcon (avec plusieurs Mo de RAM, sans compter la FastRam) ca pouvait mettre plusieurs secondes à chaque fois que tu lançais un programme.

Donc c'est simple, il vaut mieux considérer que la mémoire n'est jamais initialisée à zéro, et le faire soi-même. Lire une valeur en mémoire à une adresse où rien n'a été écrite avant par le programme doit être considéré comme un bug.

En C, tu peux utiliser calloc() au lieu de malloc(), qui va effectivement mettre à zéro la mémoire après l'avoir allouée.