(Courriels de diversion: <simplifiait@trepane-traduits.com> <recompte@dolmens-desapprouvaient.com> <acryliques@auditionnera-bizarrement.com> <jongliez@laitage-assiegerez.com> <etagements@hydravion-fassions.com> <bâtee@dirigerais-militaires.com> <pharmacien@demissionnent-aeronavale.com> <tordit@chiffonne-mante.com> <socs@teintons-notoriete.com> <appliquerait@profererai-cacophonique.com> )
>>>>> "pm" == Pierre Monlong <pierre.monlong@free.fr> writes: pm> (gdb) run pm> Starting program: /root/toto/essai tssk, tssk. pm> Ce qui nous fait bien 1 mot pour buffer1 (0xbffff9e0-0xbffff9dc=4) pm> mais on a 3 mots pour buffer2 !! (0xbffff9dc-0xbffff9d0=0xc=12) pm> pour ret on a bien 1 mot (0xbffff9d0-0xbffff9cc=4) le compilateur a gaspillé un mot pour que le pointeur ret soit aligné à une adresse qui soit un multiple de 4. L'espace perdu s'appèlle du «padding» en anglais. Sur la plupart des processeurs on est obligé de respecter des contraintes sur l'alignement; si on fait un LOAD sur une adresse non multiple de 2 par exemple le CPU lève un trap, qui est propagé à l'application en tant que SIGBUS. Sur les x86 les loads non alignés sont permis, mais nettement plus couteux que lorsque l'adresse est aligné, donc le compilateur essaye d'aligner. gcc permet de controler l'alignement; cf son manuel. -- Eric Marsden <URL:http://www.laas.fr/~emarsden/> --------------------------------------------------------------------- Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://www.CULTe.org/>