【发布时间】:2018-02-24 00:04:15
【问题描述】:
我正在尝试使用地址清理程序修复一些 C++ 代码。 代码说:
unsigned result = *(uint32_t*)data;
而消毒剂给出:
runtime error: load of misaligned address 0x6280033f410a for type 'uint32_t', which requires 4 byte alignment
我需要如何解决这个问题?
【问题讨论】:
-
memcpy指向真实uint32_t的指针,然后将其转换为unsigned。 -
你为什么用那个演员表?
-
data是什么类型? -
这个问题显然不是关于“如何投射”的。而且它似乎与“cast to
unsigned”无关。问题在于如何读取未对齐的数据。所以,请确认:您真的打算读取未对齐的数据吗?是不是应该错位了?为什么它会错位?它是如何以这种方式结束的? -
我怀疑标题与实际要求不符
标签: c++ c++11 ubsan address-sanitizer