gpt4 book ai didi

c - 未对齐的内存访问是否总是导致总线错误?

转载 作者:太空狗 更新时间:2023-10-29 16:51:58 29 4
gpt4 key购买 nike

根据维基百科页面 Segmentation fault ,未对齐的内存访问可能导致总线错误。文章给出了一个关于如何触发总线错误的例子。在示例中,我们必须启用对齐检查以查看总线错误。如果我们禁用这种对齐检查怎么办?

程序似乎运行正常。我有一个程序经常访问未对齐的内存,并且被很多人使用,但没有人向我报告总线错误或其他奇怪的结果。如果我们禁用对齐检查,未对齐内存的副作用是什么?

平台:我正在研究 x86/x86-64 .我还通过在 Mac 上使用“gcc -arch ppc”编译程序来尝试我的程序,它可以正常工作。

最佳答案

  1. 访问未对齐的内存可能会慢很多(比如慢好几倍)。

  2. 并非所有平台甚至都支持未对齐访问 - 例如,x86 和 x64 支持,但 ia64 (Itanium) 不支持。

  3. 编译器可以模拟未对齐访问(例如,VC++ 对在 ia64 上声明为 __unaligned 的指针执行此操作)- 通过插入额外的检查来检测未对齐大小写,并分别加载/存储跨越对齐边界的对象部分。然而,这甚至比原生支持它的平台上的未对齐访问还要慢。

关于c - 未对齐的内存访问是否总是导致总线错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496848/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com