微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

究竟是什么触发了内存读取访问冲突异常硬件/操作系统?

如何解决究竟是什么触发了内存读取访问冲突异常硬件/操作系统?

考虑一个表示 3 字节无符号整数的自定义数据结构。 在小端汇编中,可以简单地通过双字指针将 4 个字节加载到寄存器中,例如,对 3 个字节的整数执行加法,将低位字存储在内存地址“x”处,将结果右移 16 并存储内存地址 x + 2 处的低字节。 加载的较慢的非未定义行为版本是首先将寄存器“​​a”清零,将低位字加载到寄存器“a”,将第三个字节加载到寄存器“b”,将“b”左移 16 和或将“a”和“b”注册到另一个寄存器中。

所以现在让我们假设给定的 3 字节整数位于程序空间或数据段的“边缘”;直觉上,你会通过将整数地址解引用为双字来非法访问内存,不是吗?或者更一般地说:读取内存时何时会发生内存访问冲突;它只是正在考虑的基地址还是(baseAddress + lengthInBytes)?搜索了数周的答案,我还没有找到答案,这就是为什么我要问社区...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。