gpt4 book ai didi

exception - ARM 处理器上的数据类型未对齐异常(0xA0000002)

转载 作者:行者123 更新时间:2023-12-02 07:13:01 25 4
gpt4 key购买 nike

我的应用程序在配备 Qualcomm 1GHz Snapdragon 处理器的 HTC HD2 上运行良好,但当尝试在 Windows 专业模拟器 6 或配备 ARM 处理器的 PIDION 上运行时,它会因数据类型未对齐异常而崩溃。

谁能帮我找出它崩溃的原因以及如何解决它。

根据 this链接,__unaligned 应该可以解决崩溃问题,但在我的情况下不起作用。

最佳答案

__unaligned 不是一个 Elixir ,当您遇到未对齐异常时,您应该简单地开始扔掉它。首先,您必须确定代码中发生异常的位置,然后查看原因。您正在访问未对齐的指针吗?比如获取字节数组或某种缓冲区,然后尝试从奇数边界访问 WORD 数据或从不能被 4 整除的地址访问 DWORD 数据?

BYTE buffer[256];
....
DWORD d = *(DWORD*)buffer[3];

或者您的结构上有奇怪的包装?

#pragma pack(push, 1)
struct
{
BYTE b;
DWORD d;
} s;
#pragma pack(pop)

关键是您必须进行对齐访问。 x86 仅允许您进行未对齐访问,因为它会为您捕获异常然后进行第二次未对齐读取。 Here's a quick tutorial ,但请记住这是针对 x86 的,因此它显示 CPU 为您“修复”了错位。 ARM 就没那么宽容了。您必须自己在 ARM 上重新排列或重新组装数据。

您可能必须对对齐的地址执行 m​​emcpy 并使用那里的数据,但在不了解您的代码的情况下,不可能提供更多信息。

关于exception - ARM 处理器上的数据类型未对齐异常(0xA0000002),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3801565/

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