gpt4 book ai didi

c++ - 引用静态对象 - 在 ARM proc 上触发对齐陷阱

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:36 24 4
gpt4 key购买 nike

我有一个类:

class A {
public:
static A& instance();

...
void setValue(int val){ _value = val; }
private:
int _value;
}
A& A::instance(){
static A _Instance;
return _Instance;
}

我在 ARM 处理器上运行它。我遇到的问题是,当我从特定类(比如 B 类)调用 instance() 方法时,应用程序在内核中触发对齐陷阱。如果我从其他任何地方调用 instance(),我就不会遇到对齐陷阱。

Alignment trap: not handling instruction e28fc609 at [<0001b588>]

如果我将指针转换为未对齐的值,我可以看到会发生这种情况,但我只是引用了一个静态对象。人们会假设访问将正确对齐。

请注意,该类已大大简化。它包含很多成员变量和方法(不是我的设计!)。

有没有人对我可能哪里出错或在哪里查找有任何建议?

最佳答案

感谢您的输入。事实证明,这个问题的根本原因是段错误。反汇编显示对齐陷阱指向故障信号处理程序子例程。我现在正在调查为什么会发生这种情况,但我最初提出的问题已不再相关。

关于c++ - 引用静态对象 - 在 ARM proc 上触发对齐陷阱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5390260/

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