架构 ARM9。编程语言 C。
我们有一个第三方堆栈,其中一个调用接受指向内存位置的指针(pBuffer
)。在堆栈内部,他们可以自由移动传递的指针并按照他们的意愿访问它。不幸的是,他们偏移传入的指针并将其传递到另一个函数中,该函数试图从一个奇数/不对齐的内存位置进行操作。
((uint16 *)pBuffer)[index] = value;
其中value
的类型为uint16
,index
已进行边界检查并索引了pBuffer
。这会导致未对齐内存访问异常。pBuffer
指向堆上的char *
。
正如提到的那样,尽管我们可以窥视第三方堆栈,但我们不能正式更新代码。因此,我们通知供应商,并在下一个版本中提供更新。
我想了解是否有解决方法。如何执行上述任务而不违反未对齐访问?解决此类问题的最佳方法是什么。