Selon la page Wikipedia Segmentation fault, une erreur de bus peut être causée par un accès mémoire non aligné. L'article donne un exemple sur la façon de déclencher une erreur de bus. Dans l'exemple, nous devons activer la vérification d'alignement pour voir l'erreur de bus. Que faire si nous désactivons une telle vérification d'alignement?L'accès mémoire non aligné entraîne-t-il toujours des erreurs de bus?
Le programme semble fonctionner correctement. J'ai un accès au programme de la mémoire non alignée fréquemment, et il est utilisé par un certain nombre de personnes, mais personne ne signale les erreurs de bus ou d'autres résultats étranges pour moi. Si nous désactivons la vérification de l'alignement, quel est l'effet secondaire de la mémoire non alignée? Plateformes: Je travaille sur x86/x86-64. J'ai également essayé mon programme en le compilant avec "gcc -arch ppc" sur un Mac et cela fonctionne correctement.
Quelle est la plate-forme que vous travaillez sur ?? –
Pavel Minaev répond largement à ma question. Je travaille sur x86/x86_64. J'ai essayé mon programme en le compilant avec "gcc -arch ppc" sur Mac et cela fonctionne correctement. – user172818
Notez que l'accès mémoire non aligné (en fait, juste assignation de pointeur) est un comportement indéfini selon le standard C - donc un compilateur compatible est autorisé à faire * rien * si vous le faites (bien que tous les compilateurs ne prennent pas cette liberté). – sleske