je ne savais pas pour le x86 c'est lui l’hérétique en fait
.. ouii
je suis completement pour les alignements stricts. les loads memoires non-alignes qui fonctionnent de facon transparente, c'est mal: ca te donne l'impression que ca marche bien, alors qu'il y a potentiellement plein de penalites de perfs derriere...
apres t'as les PowerPC qu'ont un modele un peu different des loads alignes x86: les load des vector units sont des loads alignes a 16 octets, mais l'instruction ignore les 4 bits de poids faible, donc 'snap' ton adresse automatiquement... (et tu implemente manuellement un load non-aligne avec deux loads alignes des deux blocs contigus de memoire, et une combinaison de rotates ou shifts, et un select ou un or.. la au moins tu te rends bien compte du cout supplementaire, et ca fait sauter aux yeux l'acces aux deux lignes de cache contigues lors d'un load qui overlap les bords des cachelines, donc les deux cache miss potentiels au lieu d'un seul).
le malloc me garantie t'il une allocation aligné ou suis obligé d'utiliser un prama pack ?
un pragma pack ne changera strictement rien.
le malloc n'a aucune information sur le type que tu veux allouer, donc sur l'alignement, donc sur les pragma packs, donc sur les attributes aligned des structs/types
il faut imperativement que tu alignes manuellement la memoire du malloc, ou que tu utilise aligned_malloc (defini il me semble dans un des headers SSE sur x86, je sais plus exactement lequel), ou que tu t'en recode un qui wrappe malloc()
après légère réflexion tout rabbat que je suis, tout dépend de si j'ai + 4go de ram en fait ?!
heu bah non rien a voir... c'est de la memoire virtuelle, peu importe quelle ram physique t'as. tu peux tres bien avoir un systeme avec des pointeurs 64 bits, mais seulement 2 ou 3 Go de ram physique. en plus le layout de la memoire virtuelle differe totalement de celle de la memoire physique, il y a plein de plages memoires en dur reservees par l'OS dans le layout de la memoire virtuelle... bref... tu pourrais aussi avoir 30 Go de ram mais des pointeurs 32 bits, ca a pas de rapport... (tu serais effectivement limite a 4 Go de memoire adressable par process, et encore, moins en pratique pour ton appli, en enlevant les dites plages memoires reservees)