use*_*818 9 c memory-alignment
根据维基百科页面分段错误,未对齐的内存访问可能导致总线错误.本文提供了有关如何触发总线错误的示例.在该示例中,我们必须启用对齐检查以查看总线错误.如果我们禁用这种对齐检查怎么办?
该程序似乎正常工作.我有一个程序经常访问未对齐的内存,并且它被很多人使用,但没有人向我报告总线错误或其他奇怪的结果.如果我们禁用对齐检查,未对齐内存的副作用是什么?
平台:我正在开发x86/x86-64.我也通过在Mac上用"gcc -arch ppc"编译它来尝试我的程序,它运行正常.
Pav*_*aev 13
访问未对齐的内存可能要慢得多(例如,慢几倍).
并非所有平台都支持未对齐访问 - 例如x86和x64,但ia64(Itanium)不支持.
编译器可以模拟未对齐的访问(例如,VC++为__unaligned
在ia64上声明的指针执行此操作) - 通过插入附加检查来检测未对齐的情况,以及加载/存储分别跨越对齐边界的对象的部分.然而,这比在原生支持它的平台上的未对齐访问更慢.
归档时间: |
|
查看次数: |
6915 次 |
最近记录: |