Fadest (./10) :
Pour schématiser : Question en C quand c'est pas initialisés cela n'est pas 'init' par défaut a 0 ?
Un pointeur, c'est juste une variable qui pointe sur une adresse en mémoire.
Donc, à l'initialisation (mettons via une allocation mémoire, ou la déclaration d'un tableau), la valeur du pointeur est correcte, mais le bloc mémoire réservé, lui, n'est pas forcément remis à 0.
Je pense que c'est la même chose en assembleur, non ?
Exemple typique sur Lynx :
Tu fais un jeu qui marche sous émulateur
Tu le télécharges sur la Lynx via BLL et là, il ne marche pas pareil
-> si tu n'initialises pas tes variables et zones mémoires utilisées, sur Lynx, vu qu'un autre programme était en mémoire avant (le loader BLL), ta mémoire vive contient déjà des données (contrairement à Handy ou elle est vide vu que tu démarres la console avec ton jeu). Du coup, si tu n'initialises pas toi-même, tu as des surprises.
Ce n'est pas vraiment lié au C, je suis à peu prêt sur qu'en asm, ça fait la même chose, et même en GFA quand tu fais un MALLOC (le contenu de la zone réservée ne doit pas être nickel)
Pour l'asm, théoriquement un pointeur comme celui la, initialisé par le programme est en BSS, zone qui est 'censé' etre nettoyé lors du lancement du programme par l'O.S. (J'ai écrit censé car cela peut etre faux en cas d'utilisation de compacteur, un prog compacté en auto decompactable n'a souvent pas cette section nettoyé, mais bon nous sommes pas dans ce cas).
J'ai un peu mal compris car mon niveau en C est bas et meme en regression. Car dès que je vois un char, pour moi c'est un octet (Caractère) et le str me faisait penser a une 'string' donc chaine de caractere et pas a un pointeur.
Mais on va emettre des suppositions :
- ton pointeur pointe sur 0, donc debut de la 'ram interne du 68000 (on va dire)', donc a chaque lancement tu devrais avoir les memes caractères. Et si tu ecris a cette adresse, ton prog doit bien planter.
- ta chaine n'est pas fini ou initialisé avec un zero (null byte), donc tu devrais avoir des chaines affichés avec des longueurs et des caractères différents.
car l'affichage de texte sou VDI, la chaine doit se finir par un 0, tant que j'y penses tu utilises V-Text pour l'affichage ?
GT
