【发布时间】:2018-08-03 05:46:04
【问题描述】:
我的一个朋友在尝试调试开始显示“对齐陷阱”错误的代码时遇到了一个大问题。当特定函数访问全局结构时,就会出现问题。
在网络上进行了一些研究后,仍然不清楚“对齐陷阱”是什么意思或是什么。有人可以给出一个解释,特别注意通常会导致对齐陷阱的原因以及解决问题的方式(不仅仅是关于如何使用调试器,还有问题本身)?
这一切都是在带有嵌入式 Linux 的 ARM 处理器 (OMAP L138) 中用 C 代码完成的。
注意:我不是想通过这个答案获得针对特定错误的解决方案建议,但是,正如问题标题所暗示的那样,理解“对齐陷阱”错误的含义。这就是为什么我不打算放源代码之类的原因。
【问题讨论】:
-
请添加定义结构和访问功能的代码。
-
@user694733 好吧,我不确定这是否会偏离主题。我不是在寻求针对此问题的特定于错误的解决方案,而是要了解“对齐陷阱”背后的一般概念以及解决方法的一般性(Basile 提供的答案正是我的想法)回答这个问题)。在阅读了 Basile 的回答并注意到这是一个相当广泛的错误之后,我只提到了结构的东西来缩小范围。
-
很公平。 Basiles 的回答几乎涵盖了它。就个人而言,我会首先调查任何可能隐藏编译器警告/错误的指针转换。这闻起来像一个幼稚的反序列化代码。
标签: c